Функция fread () в C ++ считывает указанное количество символов из заданного входного потока.
fread () прототип
size_t fread (пустота * буфер, размер size_t, количество size_t, FILE * поток);
fread()
Функция считывает подсчет количество объектов, каждый из размера размера байт из заданного входного потока. Это похоже на вызов fgetc () size times для чтения каждого объекта. Индикатор позиции файла увеличивается в соответствии с количеством прочитанных символов.
Результирующее значение индикатора положения файла для потока не определено, если при чтении файла возникает какая-либо ошибка.
Если объекты нельзя просто скопировать, поведение не определено.
Если размер или счетчик равны нулю, вызов fread
вернет ноль и никаких других действий не будет.
Это определено в заголовочном файле.
Параметры fread ()
- буфер: указатель на блок памяти для хранения объектов.
- size: Размер каждого объекта в байтах.
- count: количество объектов для чтения.
- stream: файловый поток, из которого будут считываться данные.
fread () Возвращаемое значение
В fread()
Функция возвращает количество объектов , успешно считаны. Если возникает ошибка или условие конца файла, возвращаемое значение может быть меньше count.
Пример 1: Как работает функция fread ()
#include #include using namespace std; int main() ( FILE *fp; char buffer(100); fp = fopen("data.txt","rb"); while(!feof(fp)) ( fread(buffer,sizeof(buffer),1,fp); cout << buffer; ) return 0; )
Предположим, файл содержит следующие данные:
Деннис Ричи: C Бьярн Страуструп: C ++ Гвидо ван Россум: Python Джеймс Гослинг: Java
Когда вы запустите программу, вывод будет:
Деннис Ричи: C Бьярн Страуструп: C ++ Гвидо ван Россум: Python Джеймс Гослинг: Java
Пример 2: Как работает функция fread (), когда значение count или size равно нулю
#include #include using namespace std; int main() ( FILE *fp; char buffer(100); int retVal; fp = fopen("data.txt","rb"); /* when count is zero */ retVal = fread(buffer,sizeof(buffer),0,fp); cout << "When count = 0, return value = " << retVal << endl; /* when size is zero */ retVal = fread(buffer,0,1,fp); cout << "When size = 0, return value = " << retVal << endl; return 0; )
Когда вы запустите программу, вывод будет:
Когда count = 0, возвращаемое значение = 0 Когда size = 0, возвращаемое значение = 0