📅  最后修改于: 2023-12-03 14:59:44.707000             🧑  作者: Mango
在 C++ 中,我们常常需要从文件中读取或写入数据。在一些情况下,文件操作可能会出现一些错误,例如读取到文件结尾,在这些情况下,我们可以使用 clearerr() 函数进行错误处理。
clearerr() 函数的定义如下:
void clearerr( FILE *stream );
clearerr() 函数用于清除文件的错误标记。当进行文件操作时,如果出现一些错误(例如读取到文件结尾),就会向文件中写入错误标记。这些错误标记会导致文件操作失败。使用 clearerr() 函数可以清除这些错误标记,让文件操作正常进行。
clearerr() 函数只有一个参数,参数类型为 FILE *,表示要进行操作的文件指针。
下面是一个使用 clearerr() 函数的示例代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
FILE *fp;
char ch;
fp = fopen("test.txt", "r");
while ((ch = fgetc(fp)) != EOF) {
cout << ch;
}
if (feof(fp)) {
cout << "reach the end of file." << endl;
}
clearerr(fp); // 清除错误标记
while ((ch = fgetc(fp)) != EOF) {
cout << ch;
}
fclose(fp);
return 0;
}
在这个示例代码中,我们首先打开一个名为 "test.txt" 的文件,然后用一个 while 循环读取文件中的所有字符。当读到文件结尾时,我们使用 feof() 函数判断是否已经读取到文件结尾。如果已经读取到了文件结尾,就会向文件中写入一个错误标记。
接下来,我们使用 clearerr() 函数清除错误标记,然后再次读取文件中的所有字符。由于我们刚刚已经清除了错误标记,这次读取操作就能正常进行。