多数函数(fgets()、gets()、putc()、ungetc()、fread()等)当调用不成功时都返回EOF,EOF的值为0,它既用于报告文件结束,也用于报告错误情形下的返回。因此,为了区分究竟是错误返回还是文件结束返回,就需要调用ferror()函数来确定是否存在错误,调用feof()函数检查是否遇到文件结束。

每一个流对象内部有两个指示器:一个为错误指示器,当读写文件出错时该指示器被设置;另一个为文件结束指示器,当遇到文件尾时该指示器被设置。函数ferror()和feof()分别检查这两个指示器。
#include <stdio.h>
int ferror (FILE *stream);
int feof (FILE *stream);
void clearerr(FILE *stream);

函数ferror()返回0当且仅当流stream的错误指示器被设置。

feof()返回0当且仅当流stream的文件结束条件指示器被设置。

函数clearerr()用于清除这两个指示器。


下面给出一个实例,这个例子说明了ferror,feof,clearerr的使用方法

#include <stdio.h>int main(int argc, char *argv[])
{int i;FILE *fp;if(argc<=1){printf("usage: %s file \n",argv[0]);return 1;}fp=fopen(argv[1],"w");fgetc(fp);printf("%d \n",ferror(fp));fputs("abcdefgh",fp);fclose(fp);fp=fopen(argv[1],"r");fseek(fp,0,SEEK_END);fgetc(fp);if(feof(fp))printf("file end\n");clearerr(fp);printf("%d %d\n",ferror(fp),feof(fp));fclose(fp);return 0;
}

Linux C编程--操作文件结束和错误的判断方法(函数)相关推荐

  1. Linux系统编程之文件IO

    Linux系统编程之文件IO 文件IO第一天 一.标准IO基本概念 1.1c语言函数 (c库函数) 调用实现某一个功能,(API) 1.2系统调用:内核中的程序接口,应用程序和硬件设备之间的中间层 1 ...

  2. 【Linux系统编程】文件描述符的复制dup()和dup2()

    00. 目录 文章目录 00. 目录 01. 文件描述符复制概述 02. 常用函数 2.1 dup函数 2.2 dup2函数 03. 案例实战 3.1 dup示例 3.2 dup2示例 04. 附录 ...

  3. linux系统编程之文件与I/O(六):fcntl 函数与文件锁

    2013-05-14 11:26 8290人阅读 评论(2) 收藏 举报  分类: linux系统编程(19)  版权声明:本文为博主原创文章,未经博主允许不得转载. 一.fcntl函数 功能:操纵文 ...

  4. 在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)

    在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS) #include <linux/kernel.h> #include <linux/mo ...

  5. 在 Linux 上找出并解决程序错误的主要方法【转】

    在 Linux 上找出并解决程序错误的主要方法[转] 参考文章: (1)在 Linux 上找出并解决程序错误的主要方法[转] (2)https://www.cnblogs.com/sky-heaven ...

  6. win8安装mysql出现2503_win8.1安装msi文件出现2503错误的解决方法

    ‍‍ 现在越来越多的win8.1用户开始使用msi来安装程序,采用MSI安装的优势在于你可以随时彻底删除它们.更改安装选项,即使安装中途出现意想不到的错误,一样可以安全地恢复到以前的状态,可是有很多w ...

  7. linux yum提示Loaded plugins: fastestmirror, security错误的解决方法

    linux yum提示Loaded plugins: fastestmirror, security错误的解决方法 参考文章: (1)linux yum提示Loaded plugins: fastes ...

  8. Linux系统编程 | 01 -文件操作

    一.文件操作方法 linux中有两种方法可以操作文件:系统调用和c库函数. 1. 什么是系统调用? 由操作系统实现并提供给外部应用程序的编程接口(API),是应用程序同系统之间数据交互的桥梁. C标准 ...

  9. 【Linux | 系统编程】Linux系统编程(文件、进程线程、进程间通信)

    文章目录 Linux系统编程 文件IO open/close函数 read/write函数 文件描述符 阻塞.非阻塞 fcntl函数 lseek函数 传入传出参数 文件系统 文件存储 文件操作 sta ...

最新文章

  1. 安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
  2. 计算机硬件人员专业知识技能,2017年江苏省职业学校技能大赛(计算机硬件)竞赛实施方案...
  3. 出租WiFi到底靠不靠谱?
  4. 信捷伺服刚性调整_信捷電氣(603416):伺服與PLC增長將加速,口罩機解決方案帶來新增量...
  5. Spring框架----IOC的概念和作用之工厂模式
  6. android 系统联系人,Android读取系统联系人
  7. 软件质量保障之代码走查
  8. cad插件制作教程_画图必备的CAD超级工具箱插件下载(含gif教程)
  9. HIVE 数据仓库容量清理
  10. MSOCache文件夹能否删除?
  11. 家喻户晓的足力健,凭什么征服中老年人?
  12. 使用Comparator.comparing根据类的属性对list进行排序
  13. bootcamp空间不足_mac安装双系统 提示磁盘上没有足够的可用空间的解决方法
  14. Python的前奏:excel常用功能简介,数据透视表,切片器
  15. Python 基础|while 循环语句
  16. JavaScript Dom 事件 Bom 定时器方法
  17. apqp过程流程图及编写规则_APQP过程流程图.xls
  18. 网页设计找灵感——汽车酷站欣赏
  19. 春运“最土陀螺工长”和他的“幸福工区”
  20. 求矩形中心点坐标编程c语言,三角函数在图形学里的应用(四) ​已知矩形的中心点、边长、phi求四个顶点的坐标...

热门文章

  1. Linux环境下进入MySQL环境报权限问题:Access denied for user 'root@localhost' (using password:YSE)...
  2. 像写SQL一样编写Java数据应用-TinySqlDsl
  3. 跨域资源共享的10种方式(转)
  4. C++下的DLL编程入门
  5. JVM内存管理------垃圾搜集器简介
  6. 按照重复的次数高到低进行排序
  7. 非常漂亮的Flash纯脚本生成饼图
  8. IP Precedence DSCP、TOS
  9. [日志]保证让你一天不困的方法
  10. python爬虫人门(10)Scrapy框架之Downloader Middlewares