feof
Pruebas de fin de archivo en una secuencia.
Sintaxis
int feof(
FILE *stream
);
Parámetros
stream
Puntero a la estructura FILE
.
Valor devuelto
La función feof
devuelve un valor distinto de cero si una operación de lectura ha intentado leer más allá del final del archivo; en caso contrario, devuelve 0. Si el puntero de flujo es NULL
, la función invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, errno
se establece en EINVAL
y feof
devuelve 0.
Para obtener más información sobre los códigos de retorno, vea errno
, _doserrno
, _sys_errlist
y _sys_nerr
.
Comentarios
La rutina feof
(que se implementa como función y como macro) determina si se ha superado el final de stream
. Cuando se supera el final del archivo, las operaciones de lectura devuelven un indicador de fin de archivo hasta que la secuencia se cierre o hasta que se llame a rewind
, fsetpos
, fseek
o clearerr
en ella.
Por ejemplo, si un archivo contiene 10 bytes y lee 10 bytes del archivo, feof
devolverá 0 porque, aunque el puntero de archivo esté al final del archivo, no ha intentado leer más allá del final. feof
solo devuelve un valor distinto de cero cuando se intenta leer un byte 11.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Requisitos
Función | Encabezado necesario |
---|---|
feof |
<stdio.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_feof.c
// This program uses feof to indicate when
// it reaches the end of the file CRT_FEOF.TXT. It also
// checks for errors with ferror.
//
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int count, total = 0;
char buffer[100];
FILE *stream;
fopen_s( &stream, "crt_feof.txt", "r" );
if( stream == NULL )
exit( 1 );
// Cycle until end of file reached:
while( !feof( stream ) )
{
// Attempt to read in 100 bytes:
count = fread( buffer, sizeof( char ), 100, stream );
if( ferror( stream ) ) {
perror( "Read error" );
break;
}
// Total up actual bytes read
total += count;
}
printf( "Number of bytes read = %d\n", total );
fclose( stream );
}
Entrada: crt_feof.txt
Line one.
Line two.
Output
Number of bytes read = 19
Consulte también
Control de errores
E/S de secuencia
clearerr
_eof
ferror
perror
, _wperror