# clearerr

< c‎ | io

定义于头文件 `<stdio.h>` |  |
void clearerr( FILE *stream ); |  |

重置给定文件流的错误标志和 `EOF` 指示器。

### 参数

stream | - | 要重置错误标志的文件流

### 返回值

（无）

### 示例

    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>

    int main(void)
    {
        FILE* tmpf = tmpfile();
        fputs("abcde\n", tmpf);
        rewind(tmpf);
        int ch;
        while ((ch=fgetc(tmpf)) != EOF)
              printf("%c", ch);
        assert(feof(tmpf)); // 此循环期待以 eof 终止
        puts("End of file reached");

        clearerr(tmpf);  // 清除 eof

        if (feof(tmpf))
            puts("EOF indicator set");
        else
            puts("EOF indicator cleared\n");
    }

输出：

    abcde
    End of file reached
    EOF indicator cleared

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.21.10.1 The clearerr function (p: 338)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.19.10.1 The clearerr function (p: 304)

- C89/C90 标准（ISO/IEC 9899:1990）：

  - 4.9.10.1 The clearerr function

### 参阅

feof | 检查文件结尾 (函数)
perror | 显示对应当前错误的字符串到 stderr (函数)
ferror | 检查文件错误 (函数)