Прототип функции fread:
size_t fread( void * ptrvoid, size_t size, size_t count, FILE * filestream );
Заголовочный файл
Название | Язык |
---|---|
stdio.h | С |
cstdio | С++ |
Описание
Функция
Индикатор положения потока увеличивается на общее число записанных байтов.
Общее количество успешно считанных байт (
fread
считывает массив размером — count
элементов, каждый из которых имеет размер size
байт, из потока, и сохраняет его в блоке памяти, на который указывает ptrvoid
.Индикатор положения потока увеличивается на общее число записанных байтов.
Общее количество успешно считанных байт (
count*
).Параметры:
- ptrvoid
Указатель на блок памяти, размер которого должен быть минимум (size*count
) байт. - size
Размер в байтах каждого считываемого элемента. - count
Количество элементов, каждый из которых имеет размерsize
байт. - filestream
Указатель на объект типаFILE
, который связан с потоком ввода.
Возвращаемое значение
Возвращается объект типа size_t
, который содержит общее количество, успешно считанных, элементов.
Если возвращаемое значение отличается от количества элементов, значит произошла ошибка или был достигнут конец файла.
Вы можете использовать функции ferror или feof
для определения проблемы — произошла ошибка или был достигнут конец файла.
Пример: исходный код программы
//пример использования функции fread #include <cstdio> #include <iostream> #include <cstdlib> int main() { FILE * ptrFile = fopen( "file.txt" , "rb" ); if (ptrFile == NULL) { fputs("Ошибка файла", stderr); exit(1); } // определяем размер файла fseek(ptrFile , 0 , SEEK_END); // устанавливаем позицию в конец файла long lSize = ftell(ptrFile); // получаем размер в байтах rewind (ptrFile); // устанавливаем указатель в конец файла char * buffer = (char*) malloc(sizeof(char) * lSize); // выделить память для хранения содержимого файла if (buffer == NULL) { fputs("Ошибка памяти", stderr); exit(2); } size_t result = fread(buffer, 1, lSize, ptrFile); // считываем файл в буфер if (result != lSize) { fputs("Ошибка чтения", stderr); exit (3); } //содержимое файла теперь находится в буфере puts(buffer); // завершение работы fclose (ptrFile); free (buffer); return 0; }
Пример работы программы
Этот код считывает содержимое файла file.txt
в динамически выделенный буфер, который может быть использован для различных манипуляций с содержимым файла.
CppStudio.com
Lord of the rings (LOTR)