您当前的位置:首页 > 计算机 > 编程开发 > C语言

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

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

头文件:#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↙
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门