Прочитать заданное количество элементов из потока
#include <stdio.h>size_t fread( void *buf,size_t size,size_t num,FILE *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 системной библиотеки