Функция
#include <stdio.h>
size_t fread(void *ptr, size_t size, size_t n, FILE * stream);
считывает n элементов данных, каждый длиной size байтов, из потока stream в блок с адресной ссылкой ptr. Общее число вводимых байт равно n x size.
При успешном завершении функция возвращает количество элементов данных (не байтов), реально прочитанных.
В случае достижения конца файла или возникновения ошибки функция fread возвращает short count (возможно 0).
Пример:
#include<string.h>
#include<stdio.h>
int main(void)
{ FILE *stream;
char msg[] = "Тестовый пример";
char buf[20];
if(stream = fopen("DUMMY.FIL","w+")) == NULL)
{ fprintf(stderr,"Не могу открыть файл\n");
return 1;
}
/* вывести в файл данные */
fwrite(msg,strlen(msg)+1,1,stream);
/* перейти на начало файла */
fseek(stream,SEEK_SET,0);
/* прочитать данные */
fread(buf,strlen(msg)+1,1,stream);
printf("%s\n",buf);
fclose(stream);
return 0;}
Функция fwrite
Функция
#include <stdio.h>
size_t fwrite(void * ptr, size_t size, size_t n, FILE * stream);
добавляет n элементов данных, каждое величиной size байт в данный выходной поток. Данные записываются из ptr. Общее число выведенных байт равно n*size. ptr должен быть объявлен как указатель на некоторый объект.
При успешном завершении fwrite возвращает число выведенных элементов (не байт). При ошибке она возвращает меньшее число.
Пример:
#include<stdio.h>
struct mystruct
{
int i;
char ch;
}
int main(void)
{
FILE *stream;
struct mystruct s;
/* открыть файл TEST.$$$ */
if((stream = fopen("TEST.$$$","wb"))==NULL)
{
fprintf(stderr,"не могу открыть файл\n");
return 0;
}
s.i = 0;
s.ch = 'A';
/* вывод в файл */
fwrite(&s,sizeof(s),1,stream);
fclose(stream);
return 0;
}