Блочний вивід. Функція fwrite().Блочний ввід-вивід використовується при збереженні даних, які буде зчитувати та чи інша програма на С. Цей спосіб використовується тільки для двійкових файлів. В процесі блочного вводу-виводу дані копіюються повністю з пам’яті на диск і навпаки з диску в пам’ять. Наприклад, при одному виклику функції блочного вводу-виводу можна записати цілий масив і навпаки, одним викликом функції зчитати цей масив з диску в пам’ять. Блочний ввід-вивід виконується функціями fread() i fwrite().
Функція fwrite().Ця бібліотечна функція записує блок данихз пам’яті в двійковий файл. Прототип функції, який знаходиться в файлі stdio.h
int fwrite(void *buf, int size, int count, FILE *fp) ;
Аргумент buf -це вказівник на ділянку пам’яті, в якій є дані для запису в файл. Опис voidозначає, що аргумент є вказівником на любий тип даних.
Аргументsize -вказує розмір в байтах окремих елементів даних в блоці.
Аргумент count - вказує загальну кількість елементів даних. Наприклад, якщо треба записати масив з 100 цілочисельних елементів, то size=2,а count=100, бо цілочисельна змінна має 2 байти, кількість елементів рівна 100. Для обчислення аргументу sizeможна використати операцію sizeof().
Аргументfp -є вказівником на структуру FILE,який повертається з функції fopen() при відкритті файлу. Функція повертає кількість елементів даних, записаних в файл. Якщо ця кількість менша аргументу count, то запис був помилковим. Перевіряють правильність виводу фрагментом програми
if ( (fwrite(buf, size, count, fp) != count)
printf("Помилка");
Приклад: Записати одну змінну x типу double
fwrite(&x, sizeof(double), 1, fp);
Приклад: Записати масив data[50] типу float
float data[50];
fwrite(data, sizeof(float), 50, fp);/*Записує масив 50 елементів довжиною 4 байти*/
або fwrite(data, sizeof(data), 1, fp); /*Записує масив як 1 елемент*/
Блочний вивід. Функція fread(). Функція fread().Ця бібліотечна функція зчитує блок данихз двійкового файлу в пам¢ять.
Прототип функції, який знаходиться в файлі stdio.h
int fread(void *buf, int size, int count, FILE *fp) ;
Аргумент buf -це вказівник на ділянку пам’яті, в яку поміщаються дані з файлу. Опис voidозначає, що аргумент є вказівником на будь-який тип.
Аргументsize -вказує розмір в байтах окремих елементів даних в блоці.
Аргумент count - вказує загальну кількість елементів даних. Наприклад, якщо треба зчитати масив з 100 цілочисельних елементів, то size=2,а count=100, бо цілочисельна змінна має 2 байти, квлькість елементів рівна 100. Для обчислення аргументу sizeможна використати операцію sizeof().
Аргументfp -є вказівником на структуру FILE,який повертається з функції fopen(). Функція повертає кількість елементів даних, зчитаних з файлу. Якщо ця кількість менша аргумента count, то зчитування було помилковим. Перевіряють правильність виводу фрагментом програми
if ( (fread(buf, size, count, fp) != count) printf("Помилка");