C clearerr()

在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() 函数进行下一次错误检查时,它会显示未找到任何错误。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战