Проверить, достигнут ли конец файла (EOF)
#include <unistd.h>int eof( int filedes );
libc
eof() - функция низкого уровня, которая определяет, достигнут ли конец файла, указанного в filedes.
Операции ввода устанавливают текущую позицию в файле; вызов функции eof() позволяет определить, достигнут ли конец файла перед последующими операциями, чтобы избежать попыток чтения за пределами файла.
![]() | Стоит отметить, что файловые операции с менеджерами ресурсов могут привносить иной смысл в статус end-of-file. Так, например, конец файла при чтении из произвольного префикса /dev/device может означать отсутствие данных во входной очереди устройства в текущий момент. В редких случаях, менеджер ресурсов может не рапортовать о конце файла в принципе, всегда возвращая последнюю доступную порцию данных. Иными словами, результат работы функции eof() полностью зависит от соответствующего менеджера ресурсов. В особенности, если файлом является префикс устройства. |
#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>int main( void ){int filedes, len;char buffer[100];filedes = open( "file", O_RDONLY );if ( filedes != -1 ){while( !eof( filedes ) ){len = read( filedes, buffer, sizeof( buffer ) - 1 );buffer[ len ] = '\0';printf( "%s", buffer );}close( filedes );return (EXIT_SUCCESS);}return (EXIT_FAILURE);}
ЗОСРВ «Нейтрино»
Предыдущий раздел: Описание API системной библиотеки