Compartir por


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