1 函数原型
clearerr()函数:清除指定流stream的错误指示器和文件结束指示器,函数原型如下:
void clearerr ( FILE * stream );
cstdio库描述如下:
Clear error indicators
1. Resets both the error and the eof indicators of the stream.
2. When a i/o function fails either because of an error or because the end of the file has been reached, one of these internal indicators may be set for the stream.
3. The state of these indicators is cleared by a call to this function, or by a call to any of: rewind, fseek, fsetpos and freopen.
- 清除流的错误指示器和文件结束指示器的方法有:
(1)调用clearerr()函数:专门用于清除流的错误指示器和文件结束指示器;
(2)调用rewind()函数:重置流的位置指示器,同时清除文件流的错误指示器和文件结束指示器;
(3)调用fseek()或fsetpos()函数:重定位流的位置指示器,同时清除文件流的错误指示器和文件结束指示器;
(4)调用freopen()函数:重新打开文件,同时清除流的错误指示器和文件结束指示器。
2 参数
clearerr()函数只有一个参数stream:
- 参数stream是clearerr()函数要清除的流,类型为FILE*;stream可以是文件流或标准流;当是文件流时,stream就是fopen()函数的返回值;当是标准流时,stream就是stdin、stdout和stderr。
cstdio库描述如下:
stream
1. Pointer to a FILE object that identifies the stream.
3 返回值
clearrer()函数的返回值类型为void。
4 示例
示例代码如下所示:
int main()
{
//
FILE* fp = NULL;
char buffer[80] = { 0 };
//
fp = fopen("1.txt", "r");
if (fp == NULL)
{
perror("Failed to open file ");
exit(1);
}
//
fgets(buffer, 80, fp);
//
printf("%s\n", buffer);
//
printf("读空文件后,feof() = %d\n", feof(fp));
//
clearerr(fp);
//
printf("清除标记后,feof() = %d\n", feof(fp));
//
return 0;
}
文件内容如下图所示:
代码运行结果如下图所示: