Namespaces
Variants

feof

From cppreference.net
< c ‎ | io
Definido en el encabezado <stdio.h>
int feof ( FILE * stream ) ;

Comprueba si se ha alcanzado el final del flujo de archivo dado.

Contenidos

Parámetros

stream - el flujo de archivo a verificar

Valor de retorno

valor distinto de cero si se ha alcanzado el final del flujo, de lo contrario 0

Notas

Esta función solo reporta el estado del flujo según lo informado por la operación de E/S más reciente, no examina la fuente de datos asociada. Por ejemplo, si la operación de E/S más reciente fue un fgetc , que devolvió el último byte de un archivo, feof devuelve cero. El siguiente fgetc falla y cambia el estado del flujo a fin-de-archivo . Solo entonces feof devuelve un valor distinto de cero.

En el uso típico, el procesamiento del flujo de entrada se detiene ante cualquier error; feof y ferror se utilizan entonces para distinguir entre diferentes condiciones de error.

Ejemplo

#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;
}

Salida posible:

Hello, world!
End of file is reached successfully

Referencias

  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.21.10.2 La función feof (p: 339)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.19.10.2 La función feof (p: 305)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 4.9.10.2 La función feof

Véase también

limpia errores
(función)
muestra una cadena de caracteres correspondiente al error actual en stderr
(función)
comprueba si hay un error de archivo
(función)