A função ferror verifica o indicador de erro do fluxo e retorna um valor diferente de zero se este indicador estiver setado.
O indicador de erro de um fluxo pode ser limpo utilizando a função clearerr.
int ferror (FILE * fluxo);
fluxo - Fluxo a ter o seu indicador de erro testado.
Retorna um valor diferente de zero se e apenas se o indicador de erro do fluxo estiver setado. Se o indicador de erro estiver limpo, retorna zero.
Esse programa abre um arquivo em modo somente escrita e tenta ler dele utilizando a função fgetc. Naturalmente, a leitura falha. O indicador de erro é setado e pode ser verificado utilizando ferror.
#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;
}
c = fgetc(arquivo);
if(ferror(arquivo)) {
fprintf(stderr, "Erro ao ler do arquivo.txt\n");
}
fclose(arquivo);
return 0;
}