C clearerr()

In C programming, clearerr() clears the end-of-file and error indicators for the given stream.

The clearerr() function is defined in <stdio.h> header file.

C clearerr() Prototype

void clearerr(FILE *stream);

Function clearerr() takes one parameter which is the pointer to a FILE object that identifies the stream.

The function doesn't return any value.

Example: C clearerr() function

#include <stdio.h>

int main ()
{
  FILE * pFile;
  pFile = fopen("myfile.txt","r");

  if (pFile == NULL) perror ("Error opening file");
  else {
    fputc('x', pFile);

    if(ferror(pFile)) 
    {
      printf("Error Writing to myfile.txt\n");
      clearerr(pFile);
    }

    fgetc(pFile);

    if (!ferror(pFile))
      printf("No errors reading myfile.txt\n"); 

    fclose(pFile);
  }

  return 0;
}

Output

Error Writing to myfile.txt
No errors reading myfile.txt

This program opens an existing file called myfile.txt for reading.

Now, the function fputc() tries to write to the file. Since, writing is not allowed in reading mode, it causes an I/O error.

However, this error is cleared using clearerr(). So, when the next error check occurs in ferror() function, it displays that no errors were found.