Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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