24 - clearerr()函数

1 函数原型

clearerr()函数:清除指定流stream的错误指示器和文件结束指示器,函数原型如下:

void clearerr ( FILE * stream );

cstdio库描述如下:

Clear error indicators
1. Resets both the error and the eof indicators of the stream.
2. When a i/o function fails either because of an error or because the end of the file has been reached, one of these internal indicators may be set for the stream.
3. The state of these indicators is cleared by a call to this function, or by a call to any of: rewind, fseek, fsetpos and freopen.
  1. 清除流的错误指示器和文件结束指示器的方法有:
    (1)调用clearerr()函数:专门用于清除流的错误指示器和文件结束指示器;
    (2)调用rewind()函数:重置流的位置指示器,同时清除文件流的错误指示器和文件结束指示器;
    (3)调用fseek()或fsetpos()函数:重定位流的位置指示器,同时清除文件流的错误指示器和文件结束指示器;
    (4)调用freopen()函数:重新打开文件,同时清除流的错误指示器和文件结束指示器。

2 参数

clearerr()函数只有一个参数stream:

  1. 参数stream是clearerr()函数要清除的流,类型为FILE*;stream可以是文件流或标准流;当是文件流时,stream就是fopen()函数的返回值;当是标准流时,stream就是stdin、stdout和stderr。

cstdio库描述如下:

stream
1. Pointer to a FILE object that identifies the stream.

3 返回值

clearrer()函数的返回值类型为void。

4 示例

示例代码如下所示:

int main()
{
   //
   FILE* fp = NULL;
   char buffer[80] = { 0 };
   //
   fp = fopen("1.txt", "r");

   if (fp == NULL)
   {
      perror("Failed to open file ");
      exit(1);
   }
   //
   fgets(buffer, 80, fp);
   //
   printf("%s\n", buffer);
   //
   printf("读空文件后,feof() = %d\n", feof(fp));
   //
   clearerr(fp);
   //
   printf("清除标记后,feof() = %d\n", feof(fp));
   //
   return 0;
}

文件内容如下图所示:

在这里插入图片描述

代码运行结果如下图所示:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值