fread()

Прочитать заданное количество элементов из потока

Прототип:

#include <stdio.h>
size_t fread( void *buf,
size_t size,
size_t num,
FILE *fp );

Аргументы:

buf
Указатель на буфер, в который функция считает элементы.
size
Размер элемента для считывания.
num
Количество элементов для считывания.
fp
Поток, из которого будут считываться элементы.

Библиотека:

libc

Описание:

Функция fread() считывает num элементов по size байтов каждый из потока, определяемого fp, в буфер, определяемый buf.

Возвращаемое значение:

Количество успешно считанных элементов; это значение может быть меньше, чем запрашиваемое количество элементов.

Следует использовать функции feof() и ferror() для определения, достигнут ли конец файла или произошла ошибка ввода/вывода.

Коды ошибок:

Если возникла ошибка, errno устанавливается в значение, указывающее о типе ошибки.

Примеры:

Следующий пример считывает запись о студенте, содержащую двоичные данные. Запись о студенте объявляется в структуре student_data.

#include <stdio.h>
#include <stdlib.h>
struct student_data {
int student_id;
unsigned char marks[10];
};
size_t read_data( FILE *fp, struct student_data *p )
{
return (fread( p, sizeof( struct student_data ), 1, fp ));
}
int main( void )
{
FILE *fp;
struct student_data std;
int i;
fp = fopen( "file", "r" );
if ( fp != NULL )
{
while( read_data( fp, &std ) != 0 )
{
printf( "id=%d ", std.student_id );
for ( i = 0; i < 10; i++ )
{
printf( "%3d ", std.marks[ i ] );
}
printf( "\n" );
}
fclose( fp );
return (EXIT_SUCCESS);
}
return (EXIT_FAILURE);
}

Классификация:

ANSI, POSIX 1003.1

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

errno, fopen(), feof(), ferror()




Предыдущий раздел: Описание API системной библиотеки