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