Partilhar via


feof

Testa o fim do arquivo em um fluxo.

Sintaxe

int feof(
   FILE *stream
);

Parâmetros

stream
Ponteiro para a estrutura FILE.

Valor retornado

A função feof retorna um valor diferente de zero se uma operação de leitura tentou ler após o final do arquivo. Caso contrário, retorna 0. Se o ponteiro de fluxo for NULL, a função invocará o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro. Se a execução tiver permissão para continuar, errno será definido como EINVAL e feof retornará 0.

Para obter mais informações sobre códigos de retorno, confira errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

A rotina feof (implementada como uma função e como uma macro) determina se o final do stream foi passado. Quando o fim do arquivo for passado, as operações de leitura retornarão um indicador de fim de arquivo até que o fluxo seja fechado ou até rewind, fsetpos, fseek ou clearerr ser chamado.

Por exemplo, se um arquivo contiver 10 bytes e você ler 10 bytes do arquivo, feof retornará 0 porque, mesmo que o ponteiro do arquivo esteja no final do arquivo, você não tentou ler além do final. Somente após a tentativa de ler um 11º byte o feof retornará um valor diferente de zero.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Função Cabeçalho necessário
feof <stdio.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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.

Saída

Number of bytes read = 19

Confira também

Tratamento de erros
E/S de fluxo
clearerr
_eof
ferror
perror, _wperror