feof()

Проверить флаг достижения конца файла (EOF) у потока

Прототип:

#include <stdio.h>
int feof( FILE *fp );

Аргументы:

fp
Поток, который нужно проверить.

Библиотека:

libc

Описание:

Функция feof() проверяет флаг достижения конца файла для потока, определяемого fp.

Поскольку флаг конца файла устанавливается, когда операция ввода пытается считать данные за пределами конца файла, функция feof() определяет достижение конца файла только после попытки чтения за пределами файла. Таким образом, если файл содержит 10 строк, feof() не определит конец файла после чтения десятой строки; она определит конец файла при следующей операции чтения.


Note: Стоит отметить, что файловые операции с менеджерами ресурсов могут привносить иной смысл в статус 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 системной библиотеки