fread
и fwrite
, определенные в <stdio.h>
(документы здесь ), имеют следующую подпись:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *" stream );
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
- Для обоих из них требуется указатель на буфер,
ptr
, который будет содержать начальный адрес, куда должны быть скопированы данные (fread
) или куда скопировать (fwrite
) Они оба должны копироваться nmemb
элементов каждый из size
байтов. S Например, если вы копируете буфер из 100 символов
fread (ptr, 1, 100, filePointer);
, поскольку размер char
равно 1. В общем случае, когда вы копируете N элементов типа myType
fread( ptr, sizeof(myType), N, filePointer );
, и в этом случае будет прочитано всего sizeof(myType) * N
байт.
Для них требуется действительный указатель на файл (FILE *
), полученный с помощью успешного вызова функции fopen
(описано здесь ).
Говоря об их возвращаемом значении, я не могу написать описания лучше, чем те, которые содержатся в связанной документации:
В случае успеха, fread()
и fwrite()
возвращают количество элементов прочитанных или записанных. Это число равно количеству байтов, переданных, только когда размер равен 1. Если происходит ошибка или достигнут конец файла, возвращаемое значение представляет собой короткий счетчик элементов (или ноль).
Таким образом, в случае успеха он вернет самое большее nmemb
.