Функция fread
Функция fread читает данные из файла,
открытого с помощью fopen, в буфер.
Первым параметром функция принимает указатель
на буфер, куда будут записаны прочитанные данные,
вторым - размер одного элемента в байтах,
третьим - количество элементов для чтения,
а четвёртым - указатель на структуру FILE,
связанную с файлом. Функция возвращает количество
успешно прочитанных элементов. Если достигнут конец
файла или произошла ошибка, возвращаемое значение
может быть меньше запрошенного.
Синтаксис
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
Пример
Давайте создадим файл, запишем в него строку
"abcde", а затем прочитаем её с помощью
функции fread в буфер и выведем результат:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *file = fopen("test.txt", "w");
fputs("abcde", file);
fclose(file);
file = fopen("test.txt", "r");
char buf[6] = {0};
size_t res = fread(buf, sizeof(char), 5, file);
fclose(file);
cout << buf << endl;
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abcde"
5
Пример
Давайте прочитаем из файла меньше данных, чем в нём содержится, и проверим возвращаемое значение функции:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
FILE *file = fopen("test.txt", "w");
fputs("12345", file);
fclose(file);
file = fopen("test.txt", "r");
char buf[4] = {0};
size_t res = fread(buf, sizeof(char), 3, file);
fclose(file);
cout << buf << endl;
cout << res << endl;
return 0;
}
Результат выполнения кода:
123
3