在C编程中,clearerr() 用于清除指定流的“文件结束”和“错误”指示符。
clearerr()
函数定义在 <stdio.h> 头文件中。
C clearerr() 原型
void clearerr(FILE *stream);
clearerr() 函数接受一个参数,即指向 FILE 对象的指针,该对象标识流。
该函数不返回值。
示例:C clearerr() 函数
#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;
}
输出
Error Writing to myfile.txt No errors reading myfile.txt
此程序以读取模式打开一个名为 myfile.txt
的现有文件。
现在,fputc()
函数尝试向文件写入。由于在读取模式下不允许写入,因此会产生 I/O 错误。
但是,此错误会使用 clearerr()
清除。因此,当 ferror()
函数进行下一次错误检查时,它会显示未找到任何错误。