X Код для використання на сайті:
Ширина px

Скопіюйте цей код і вставте його на свій сайт

X Для завантаження презентації, скористайтесь соціальною кнопкою для рекомендації сервісу SvitPPT Завантажити собі цю презентацію

Презентація на тему:
Обмін блоками даних

Завантажити презентацію

Обмін блоками даних

Завантажити презентацію

Презентація по слайдам:

Слайд 1

Обмін блоками даних Зчитати з потоку блок даних заданого розміру можна за допомогою функції size_t fread (void *buf, size_t size, size_t n, FILE *fp); що заносить у буфер n об’єктів розміром size. Тип size_t оголошено в через декларацію typedef. У Borland C він збігається з типом int. Функція повертає кількість реально зчитаних об’єктів. Розглянемо приклад визначеня середньоарифметичного значення дійсних чисел, бінарні коди яких зберігаються у файлі. Дані зчитуються в буфер блоками по N чисел. Робота завершується коли розмір зчитаного блоку менший за N, що сигналізує про досягнення кінця файла.

Слайд 2

#include #define fname "sum.xz" #define N 100 void main() { int a[N], n, i; float s=0, k=0; FILE *f; f =fopen ( fname, "rb");

Слайд 3

do { n=fread (a, sizeof(int), N, f); for (i=0; i

Слайд 4

Запис блоку даних у потік виконує функція size_t fwrite (void *buf, size_t size, size_t n, FILE *fp); Параметри такі ж, як і в функції fread(). Бібліотека Borland C додатково включає функції int getw (FILE *fp); int putw (int numb, FILE *fp); Функції повертають значення зчитаного або записаного в бінарний файл двобайтового двійкового коду цілого числа. Приклад: знаходження номера заданого числа в даному бінарному файлі

Слайд 5

#include long Find(FILE *f, int n) { long k=1,N; do { if (N=getw(f)==n) return k; k++; } while (N!=EOF); return 0; } void main() { FILE *f=fopen(“prog.xz”,”rb”); printf(“%d”,Find(f,5)); fclose(f); }

Слайд 6

Бінарні файли мають переваги, порівняно з текстовими при зберіганні числових даних. Операції читання і запису з такими файлами виконуються швидше, так як відсутня необхідність форматування (переведення в текстове представлення та навпаки). Двійкові файли зазвичай мають менший розмір, ніж аналогічні текстові файли. В двійкових файлах можна переміщуватися в будь-яку позицію і читати або записувати дані в довільній послідовності, в той час, як в текстових файлах практично завжди виконується послідовна обробка інформації. Робота з бінарними файлами

Слайд 7

#include #include struct mystruct {       int i;       char ch; }; int main(void) {       FILE *stream;       struct mystruct s;       if ((stream = fopen("test.dan", "wb")) == NULL)       {          fprintf(stderr, "Неможливо відкрити файл\n");              return 1;       }       s.i = 0;       s.ch = 'A';       fwrite(&s, sizeof(s), 1, stream);       fclose(stream);       return 0; }

Слайд 8

Для організації читання даних з файлу в довільному порядку використовується "покажчик файла" (курсор), який визначає поточну позицію у файлі. При читанні даних курсор автоматично зміщується на число прочитаних байтів. Отримати поточну позицію курсору файла можна за допомогою функції ftell() long ftell (FILE *stream);       Встановлюється поточна позиція курсору у файлі за допомогою функції fseek(): int fseek (FILE *stream, long offset, int whence);       Ця функція задає зміщення на число байтів offset від точки відліку, яка визначається параметром whence. Цей параметр може приймати значення 0, 1, 2.

Слайд 9

Можливі значення параметра whence функції fseek         Якщо задане значення whence=1, то offset може приймати як додатне, так і від'ємне значення, тобто зсув вперед або назад.     Функція rewind() переміщує курсор на початок файлу void rewind (FILE *stream);     Те ж саме можна зробити за допомогою fseek() fseek (stream, 0L, SEEK_SET); Встановлення покажчика перед 10-м елементом від кінця файла: fseek (f, -10*sizeof(double), SEEK_END); Константа whence Точка відліку SEEK_SET 0 Початок файлу SEEK_CUR 1 Поточна позиція SEEK_END 2 Кінець файлу

Слайд 10

Приклад визначення розміру файлу #include long filesize (FILE *stream); int main (void) {      FILE *stream;      stream = fopen("test.dan ", "wb+");      printf("Розмір файла test.dan рівний %ld байт\n",       filesize(stream));      fclose(stream);      return 0; }

Слайд 11

long filesize (FILE *stream) {     long curpos, length;     curpos = ftell (stream); /*збереження поточної позиції файла*/     fseek (stream, 0L, SEEK_END); /*перехід у кінець*/    length = ftell (stream); /*розмір відповідає зміщенню*/      fseek (stream, curpos, SEEK_SET); /*повернення покажчика на попередню позицію*/      return length; }

Слайд 12

Приклад: необхідно знайти добуток матриці а[n][m] на вектор b[m]. В результаті отримаємо вектор с[n]. Значення елементів матриці та вектора вводимо з файлу ish.dan. Результати передаємо на екран та в файл rez.dan. #include #include #define N 2 #define M 4

Слайд 13

void main() { float a[N][M], b[M], c[N]; int i, j; FILE *p1, *p2; p1=fopen("ish.dan","r"); if(p1==0) { puts("Файл ish.dan не открылся"); exit(1); } p2=fopen("rez.dan", "w"); for(i=0; i

Слайд 14

for (j=0; j

Завантажити презентацію

Презентації по предмету Інформатика