Проверить флаг достижения конца файла (EOF) у потока
#include <stdio.h>int feof( FILE *fp );
libc
Функция feof() проверяет флаг достижения конца файла для потока, определяемого fp.
Поскольку флаг конца файла устанавливается, когда операция ввода пытается считать данные за пределами конца файла, функция feof() определяет достижение конца файла только после попытки чтения за пределами файла. Таким образом, если файл содержит 10
строк, feof() не определит конец файла после чтения десятой строки; она определит конец файла при следующей операции чтения.
![]() | Стоит отметить, что файловые операции с менеджерами ресурсов могут привносить иной смысл в статус end-of-file. Так, например, конец файла при чтении из произвольного префикса /dev/device может означать отсутствие данных во входной очереди устройства в текущий момент. В редких случаях, менеджер ресурсов может не рапортовать о конце файла в принципе, всегда возвращая последнюю доступную порцию данных. Иными словами, результат работы функции eof() полностью зависит от соответствующего менеджера ресурсов. В особенности, если файлом является префикс устройства. |
0
, если флаг конца файла не установлен, или ненулевое значение, если флаг конца файла установлен.
#include <stdio.h>#include <stdlib.h>void process_record( char *buf ){printf( "%s\n", buf );}int main( void ){FILE *fp;char buffer[100];fp = fopen( "file", "r" );fgets( buffer, sizeof( buffer ), fp );while ( ! feof( fp ) ){process_record( buffer );fgets( buffer, sizeof( buffer ), fp );}fclose( fp );return (EXIT_SUCCESS);}
ANSI, POSIX 1003.1
clearerr(), ferror(), fgetc(), fgetchar(), fgets(), fgetwc(), fgetws(), fopen(), freopen(), getc(), getc_unlocked(), getchar(), getchar_unlocked(), gets(), getw(), getwc(), getwchar(), perror(), read()
Предыдущий раздел: Описание API системной библиотеки