2025年4月14日 星期一 乙巳(蛇)年 正月十五 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言clearerr()函数:清除(复位)文件流的错误标识,并使文件结束标标识为0

时间:12-29来源:作者:点击数:87

头文件:#include <stdio.h>

clearerr()函数用来清除(复位)文件流的错误标志位,并使文件结束标志位为0。

错误标志一旦出现,就一直保留,影响后续文件的操作,直到对同一文件调用clearerr()函数或rewind()函数,或任何一个输入输出函数。

关于标志位的知识请参考:C语言FILE结构体以及缓冲区深入探讨

clearerr()函数常与ferror()函数一起使用,如果ferror(fp)发现错误,返回一个非0值,那么调用clearerr(fp)后,ferror(fp)的值变为0。

clearerr()函数原型为:
    void clearerr(FILE * stream);

【参数】stream为文件流指针。

【实例】下面的程序将在标准输入流上生成一个错误,然后清除,保证后续读写正确。

  • #include <stdio.h>
  • void main( void )
  • {
  • int c;
  • // 向stdin写入数据时会产生错误
  • putc( 'c', stdin );
  • if( ferror( stdin ) )
  • {
  • perror( "Write error" );
  • clearerr( stdin );
  • }
  • // 检测读操作是否有错
  • printf( "Will input cause an error? " );
  • c = getc( stdin );
  • if( ferror( stdin ) )
  • {
  • perror( "Read error" );
  • clearerr( stdin );
  • }
  • }

运行结果:

Write error: No error
Will input cause an error? n↙
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门