前言

对于在文件操作时,怎么样判断文件是否结束,以feof来判断文件读取结束是否正确?

一、MSDN对feof的介绍?


对与返回值的描述是:
feof函数在第一次读取操作后返回一个非零值,该操作试图读取文件的末尾。如果当前位置不是文件结尾,则返回0。没有错误返回。

仔细读最后一句话,我们得到的信息是,如果当函数对文件流的操作失败时,它是不能正确抛出错误的,它仅仅只能判断文件是否结束。
即在文件读取过程中,避免用feof函数的返回值来判断文件读取是否结束,而是应用于当前文件读取结束时,判断时读取结束还是遇到文件尾结束

1.如何正确判断文件是否结束

对于任意的流操作函数,都有对应的返回值来
如以下代码

     end = fscanf(fp,"%d %s %s", &(t->p.id), &(t->p.name), &(t->p.telnum)); if (end == EOF){break;}end = fgetsif(end == NULL){break;}

在判断对文件操作结束的时候,要以对应操作函数的返回值来进行判断

Ⅰ. 文本文件读取是否结束,应该判断:

对应函数的返回值
fgets是否为NULL;
fgetc是否为EOF;
fscanf是否为EOF;

Ⅱ. 二进制文件的读取是否结束,应该判断:
|
fread:返回值是否小于实际要读取的个数

然后在读取结束后再总的判断是因何而结束:
Ⅲ.

 if(ferror(pf)){printf("读取错误而失败结束");}else if(feof(fp)){printf("遇到文件末尾而结束");}

ferror:若流上无错误发生,返回0,否则返回非零值

2.总结

用对应流操作函数的返回值来判断文件是否结束

C语言文件读取结束判断正确方式相关推荐

  1. C语言文件操作(四) —— 文件读取结束的判定(feof、ferror)

            目录 1.feof.ferror 函数返回值 (1) feof 函数 (2) ferror 函数 2.feof.ferror 函数函数使用 fgetc.fgets的返回值说明都有提到一 ...

  2. c语言中关于文件读取结束的判定,以及feof函数的理解

    判断一个文件的读取是否结束,很多人,会想到用feof函数来判定,的确需要用到这个函数,但是仅仅靠这个函数是不够的. 错误用法: #include<stdio.h>int main() {F ...

  3. C语言 ---文件读取

    C语言 -文件读取 参考学习链接: https://blog.csdn.net/qq_38149046/article/details/80359743 http://c.biancheng.net/ ...

  4. 【python】文件读取写 open的方式with的方式 异常报错处理

    前言 1.文件读取 (open的方式) (with的方式) open的方式:读取异常-->原因:未关闭文件 2.写入文件 (open的方式) (with的方式) 3.读取后写入新文件 1.文件读 ...

  5. 掌握R语言文件读取方法

    目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法 base包内readLines用法 stringi包内stri_read_lines xlsx包内Date Input ...

  6. C语言文件读取错误怎么解决,c语言中文件随机读取出错如何解决

    在一个链表中找出相同的结点的算法与之相似,不过对于文件来说有点烦. 因为在C语言中对流式文件进行操作时,打开文件后,有一个读写位置指针,记录的是读写时在文件中的位置,其初始状态与打开方式有关.r.r+ ...

  7. c语言文件读取与写入

    fopen的介绍转自百度百科:https://baike.baidu.com/item/fopen/10942321?fr=aladdin 函数原型: FILE * fopen(const char ...

  8. java 读取css文件_java文件读取的两种方式

    JAVA中读取文件(二进制,字符)内容的几种方 JAVA中读取文件内容的方法有很多,比如按字节读取文件内容,按字符读取文件内容,按行读取文件内容,随机读取文件内容等方法,本文就以上方法的具体实现给出代 ...

  9. c语言 文件读取z整行操作,C语言文件操作函数之ferror feof clearerr

    这些函数都是和文件读写时发生错误有关,下面一一分析: 1:ferror 原型:int ferror(FILE * fp) 作用:测试一个文件流是否被设置了错误标识符,如果是返回非 0 整数,否则返回 ...

最新文章

  1. 《征服C指针》作者语录
  2. v-if 与v-show 的区别及使用场景
  3. 计算机技术级生活中的应用,人工智能技术在计算机中的发展与应用
  4. JavaScript字符串方法终极指南-拆分
  5. Android 客户端与服务器交互方式
  6. 【BZOJ2659】算不出的算式,打表找规律
  7. python怎么开始打代码_Python代码写好了怎么运行?
  8. 定义并调用函数 十进制转二进制_用‘栈的思想编写一个十进制转换二进制、八进制或十六进制的程序...
  9. 无法将多信息文本转换为url_实体链接:信息抽取中的NLP的基础任务
  10. NCM格式如何转换为Mp3-音乐格式ncm转换mp3工具
  11. 《深入浅出WPF》笔记——资源篇
  12. 计算机硬盘应该什么格式化,硬盘应该格式化成哪种格式为好?
  13. 联想研究院裁员---血淋漓的教训:公司不是家(老文)
  14. 深入浅出计算机组成原理:Superscalar和VLIW-如何让CPU的吞吐率超过1?(第26讲)...
  15. LSTM 08:超详细LSTM调参指南
  16. 唯物辩证法-马克思主义辩证法
  17. 番外篇15:libevent简单理解(附libevent官方代码解析,和跨平台服务器、客户端链接代码)
  18. android vendor下的属性值
  19. 统计单词频率 java_java 统计一个(英文)文本中频率最高的10个单词
  20. 文库网站在线预览的真实html,墨涩网 - amWiki 轻文库源码+Atom网站搭建教程——墨涩网...

热门文章

  1. 直播源码APP的最佳扫码插件,自定义视图
  2. 基于Matlab的RC4加密图像
  3. 数据库系统 - 数据库的结构与模式
  4. 正则表达式限制VUE input只能输入正整数
  5. MQ 系列之初识消息中间件
  6. el-progress仪表盘进度条底色修改
  7. 用postgresql(postgis) 查找指定范围内的兴趣点
  8. 开源 API 管理工具 v 1.6.0 发布:切换 tab 不再担心数据丢失
  9. Emscripten简介及初体验
  10. 结构风险最小化和VC维度理论