feof
| Types and objects | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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) |
|
|
Documentación de C++
para
feof
|
|