int feof(FILE *stream)
Макросом feof() контролируется указатель положения в файле — для того, чтобы установить, достигнут ли конец файла, связанный с потоком stream. Если указатель положения в файле находится в конце файла, то возвращается ненулевое значение; в противном случае возвращается нуль.
Если конец файла был уже достигнут, то последующие операции чтения будут возвращать EOF до одного из двух событий: вызова rewind() или смещения указателя положения в файле с помощью fseek().
Макрос особенно полезен при работе с двоичными файлами, поскольку маркер конца файла — также допустимое двоичное целое число. Для определения момента достижения конца файла необходимо в явной форме вызывать feof(), а не просто проверять переменную, возвращаемую, например, функцией getc().