A função feof verifica o indicador de fim de arquivo (EOF) do fluxo e retorna um valor diferente de zero se este indicador estiver setado.
O indicador de fim de arquivo (EOF) de um fluxo pode ser limpo utilizando a função clearerr.
int feof (FILE * fluxo);
fluxo - Fluxo a ter o seu indicador de EOF testado.
Retorna um valor diferente de zero se e apenas se o indicador de fim de arquivo (EOF) do fluxo estiver setado. Se o indicador de EOF estiver limpo, retorna zero.
#include <stdio.h>
int main() {
FILE *arquivo;
char c;
arquivo = fopen("arquivo.txt", "w");
if(arquivo == NULL) {
fprintf(stdderr, "Erro ao abrir o arquivo.txt\n");
return 1;
}
/* lê até receber um EOF. receber um EOF não significa que o fgetc
leu até alcançar o fim do arquivo. erros também retornam EOF. */
while(fgetc(arquivo != EOF);
if(feof(arquivo)) {
puts("O arquivo inteiro foi lido.");
} else {
puts("O indicador de fim de arquivo (EOF) não está marcado. Um erro ocorreu.");
}
fclose(arquivo);
return 0;
}
clearerr função
ferror função
EOF macro