Spec-Zone.ru › C

feof

Определено в заголовке <stdio.h>
int feof( FILE *stream );

Проверяет, достигнут ли конец заданного потока файла.

Параметры

stream - проверяемый поток файла

Возвращаемое значение

ненулевое значение, если конец потока достигнут, в противном случае ​0​

Примечания

Эта функция только сообщает о состоянии потока, как оно было получено в результате последней операции ввода-вывода, она не проверяет связанный источник данных. Например, если последняя операция ввода-вывода была fgetc, которая вернула последний байт файла, feof возвращает ноль. Следующая fgetc завершается неудачей и изменяет состояние потока на конец файла. Только тогда feof возвращает ненулевое значение.

В типичном использовании обработка входного потока прекращается при любой ошибке; feof и ferror используются для различения различных условий ошибок.

Пример

#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL);
    int is_ok = EXIT_FAILURE;
 
    FILE* fp = fopen(fname, "w+");
    if (!fp) {
        perror("File opening failed");
        return is_ok;
    }
    fputs("Hello, world!\n", fp);
    rewind(fp);
 
    int c; // note: int, not char, required to handle EOF
    while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop
        putchar(c);
 
    if (ferror(fp))
        puts("I/O error when reading");
    else if (feof(fp)) {
        puts("End of file is reached successfully");
        is_ok = EXIT_SUCCESS;
    }
 
    fclose(fp);
    remove(fname);
    return is_ok;
}

Возможный вывод:

Hello, world!
End of file is reached successfully

Ссылки

  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.21.10.2 Функция feof (с. 339)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.19.10.2 Функция feof (с. 305)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
    • 4.9.10.2 Функция feof

См. также

clearerr
очищает ошибки
(функция)
perror
отображает строку символов, соответствующую текущей ошибке, в stderr
(функция)
ferror
проверяет наличие ошибки файла
(функция)
Документация C++ для feof

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/io/feof

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API