linux 标准io下的 feof ferror clearerr 函数

前言

cat指令的实现 在上节课 已经讲了  只要两个参数 配合 读写函数 进行 
用户会在内核读取源文件  用户在写入 内核  内核的驱动程序会把它输出到终端显示
因为 argv[0] 为固定的命令参数 所以不用在代码体现 并且查看的格式是 cat xxx.C
 所以只需要在代码 写一个参数argv[1]就行了(fopen函数)。

feof ferror 函数

先写一个标准io的输出输入 函数 fputc fgetc

在这里插入图片描述

在这里插入图片描述

#include<stdio.h>


int  main(int argc,char *argv[])
{
     FILE *fd;
      int n;

    fd=fopen("w.c","w+");

    if(fd==NULL)
    {
        printf("fopen is error\n");
        return -1;
    }
        printf("fopen is sueecssed\n");


     fputc('A',fd);

     rewind(fd); //重新偏移到0位置
     
     n=fgetc(fd);
     
     printf("%c\n",n);
    
     fclose(fd);
      return 0;

}

在这里插入图片描述
加上 feof ferror 函数 判断是否到文件尾部 和是否读写错误

在这里插入图片描述

在这里插入图片描述

  fgetc  到了文件尾部就会返回 EOC  EOC 就是-1
foef 和 fgetc的返回值   都是用来 判断是否到文件尾部的 
#include<stdio.h>


int  main(int argc,char *argv[])
{
     FILE *fd;
      int n;

    fd=fopen("w.c","w+");

    if(fd==NULL)
    {
        printf("fopen is error\n");
        return -1;
    }
        printf("fopen is sueecssed\n");


     fputc('A',fd);

     rewind(fd);

     n=fgetc(fd);
     printf("%c\n",n);
     n=fgetc(fd);  //判断是否到文件尾部
     printf("fgetc is %d\n",n);

     printf("feof is %d ferror is %d\n",feof(fd),ferror(fd));//
     // 判断是否到文件尾部 和是否读写错误  打印返回值

     fclose(fd);

      return 0;

}

在这里插入图片描述

feof ==1 feror==0 分别 对应了到了文件尾部 , 不是读写错误 

clearerr 函数

在这里插入图片描述

#include<stdio.h>


int  main(int argc,char *argv[])
{
     FILE *fd;
      int n;

    fd=fopen("w.c","w+");

    if(fd==NULL)
    {
        printf("fopen is error\n");
        return -1;
    }
        printf("fopen is sueecssed\n");


     fputc('A',fd);

     rewind(fd);

     n=fgetc(fd);
     printf("%c\n",n);
     n=fgetc(fd);
     printf("fgetc is %d\n",n);

     printf("feof is %d ferror is %d\n",feof(fd),ferror(fd));
   
      clearerr(fd);//清除流错误 
     printf("feof is %d ferror is %d\n",feof(fd),ferror(fd));

     fclose(fd);

      return 0;

}

在这里插入图片描述

清除流 错误之后  他不是在文件尾部 也不是读写错误 也就是一切正常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值