The clearerr function resets the error flags and EOF indicator for the given stream.
When an error occurs, you can use |perror()| to figure out which error actually occurred.
/* * clearerr example code * http://code-reference.com/c/stdio.h/clearerr */ #include <stdio.h> /* including standard library */ //#include <windows.h> /* uncomment this for Windows */ int main( void ) { FILE *handle; handle = fopen("test.txt","r"); if (handle!=NULL) { fputc ('X',handle); if (ferror (handle) == 1 ) { printf ("error in writing to test.txt\n"); clearerr (handle); } fgetc (handle); if (ferror (handle) == 0) printf ("its all fine\n"); fclose (handle); } else { printf ("error opening file for reading"); } return 0; }
output: ./clearerr error in writing to test.txt its all fine