在c语言中,判断文件结尾有两种方法,第一种是使用feof()函数,feof(fp)用于测试fp所指向的文件的当前状态是否为“文件结束”。如果是,函数则返回的是非0值(真),否则为0(假),要注意的是,feof()是先读文件在判断是不是到达文件结束,所以当使用feof()作为循环判断条件的话,就需要注意一种情况,就是当文件为空的时候,它也会读取一次文件内容然后再跳出循环,所以有可能会读取到一些不可知的内容出来。

EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,ASCII代码值的范围是0~255,EOF的16进制代码为0xFF(十进制为-1),因此可以用EOF作为文件结束标志。但是如果文件格式为二进制文件,就不适合用EOF来判断文件到达结尾了,因为有可能文件中也存在一个数据为0xFF,这样当读取到这个数据是,就无法判断是到达文件结尾,还是读取到的是文件的内容了。

这里需要解决的就是feof()作为循环条件遇到空文件时的情况,网上找了好多,但是都没有实现,然后自己受到了点启发。想到了一个笨办法,这里贴下代码

 1 void read(void)
 2 {
 3     int ch;
 4     FILE *fp;
 5     if((fp=fopen("txt.txt","rt"))==NULL)
 6     {
 7         printf("读取信息失败,请重试");
 8         getchar();
 9         exit(1);
10     }
11     ch=fgetc(fp);                    //首先从文件中读取,判断是不是文件结束符EOF
12     if(ch==EOF)
13     {
14         printf("什么都没有");
15         fclose(fp);
16         return;                        //如果是直接关闭文件退出
17     }
18     rewind(fp);                      //这步很重要,如果判断不是,让文件内部的指针重新指向文件开头
19     while(!feof(fp))
20     {
21             ...                              //正常读取文件内容
22     }           

转载于:https://www.cnblogs.com/kingos/p/4572906.html

c 语言文本文件判断是否到达结尾的问题相关推荐

  1. 如何判断无法到达目标的拼图_拼图项目的动机和目标

    如何判断无法到达目标的拼图 几周前,我写了一篇关于Jigsaw项目可能如何破坏现有代码的文章 . 那么我们得到什么回报呢? 让我们看一下项目解决的痛点及其在Java 9中解决问题的目标. 系列 这篇文 ...

  2. 为什么文本文件以换行符结尾?

    我假设这里的每个人都熟悉所有文本文件应以换行符结尾的格言. 多年来我一直都知道这个"规则",但我一直在想 - 为什么? #1楼 我总是认为规则来自于解析没有结束换行符的文件很困难的 ...

  3. c语言判断非法字符题目,C语言考试题库之判断题-c语言考试判断题

    <C语言考试题库之判断题-c语言考试判断题>由会员分享,可在线阅读,更多相关<C语言考试题库之判断题-c语言考试判断题(7页珍藏版)>请在人人文库网上搜索. 1.三.判断题(1 ...

  4. 10、(go语言)文本文件处理

    10.Go语言文本文件处理 1 字符串处理 1.1 字符串的处理 1.1.1 Contains 1.1.2 Join 1.1.3 Index 1.1.4 Repeat 1.1.5 Replace 1. ...

  5. linux检查socekt是否断开,如何在C语言中判断socket是否已经断开

    如果不主动关闭socket的话,系统不会自动关闭的,除非当前进程挂掉了,操作系统把占用的socket回收了才会关闭.小编今天跟大家简单介绍下如何在C语言中判断socket是否已经断开 下面来介绍判断非 ...

  6. 【C 语言】文件操作 ( 文件结尾判定 )

    文章目录 一.文件结尾判定 1.使用 EOF 判定 2.使用 feof 函数判定 一.文件结尾判定 1.使用 EOF 判定 文件结尾标识符是 EOF ; #define EOF (-1) 使用 get ...

  7. 总结和分析几种判断RecyclerView到达底部的方法

    上一篇文章我讲到用事件分发的原理结合SwipeRefreshLayout写一个RecyclerView的上下拉,里面有一个判断RecyclerView是否到达底部的方法isBottom.我的同事用了这 ...

  8. C语言程序判断计算机的CPU大小端

    如何判断一台计算机的CPU是大端还是小字端对齐呢? 那么首先得了解何为大端,何为小端,明确一下概念. 所谓大端模式,是指字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端格式:与大 ...

  9. C语言条件判断 if / else - C语言零基础入门教程

    目录 一.C 语言条件判断 if 1.if 语法 2.if 实战 二.C 语言条件判断 if / else 1.if / else 语法 2.if / else 实战 三.猜你喜欢 零基础 C/C++ ...

  10. c语言中判断输入是否为数字_C语言编程判断回文数

    大家好,我是阿汤哥,前两天在公众号后台收到一个朋友问回文数,今天我们就来谈谈怎么用C语言编程判断一个数是不是回文数. 怎么判断回文数? 首先看定义,什么是回文数. 回文数 定义: 设n是一任意自然数. ...

最新文章

  1. 《人月神话》——外科手术队伍——笔记!
  2. mysql分页与分页性能查询优化
  3. 一个TextView使用不同的颜色
  4. 乔布斯,影响了一个时代的人
  5. tf.contrib.rnn.core_rnn_cell.BasicLSTMCell should be replaced by tf.contrib.rnn.BasicLSTMCell.
  6. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库...
  7. 移动硬盘安装win10操作系统
  8. win7找回快速启动栏
  9. JAVA方式对接FIL节点钱包(也有离线)
  10. 在AWS Lambda上部署EC2编译的FFmpeg工具——自定义层的方案
  11. 基于ZYNQ的开源CANopen协议栈CANFestival移植
  12. 英文 SCI 论文写作常用句式(保持更新)
  13. <script>alert(1)</script>怎么在页面显示且不出现功能
  14. 听课感悟——信息与信息特征
  15. MindSpore【数据集功能】无法查看数据集
  16. 单细胞数据分析工具scvi介绍
  17. SAP 中的各种接口技术总结
  18. Linux:python捕获异常,模板,文件以及数据存储
  19. H5新增语义化标签以及属性
  20. Java实现模拟KTV点歌系统

热门文章

  1. SQLSERVER中使用函数去掉数据中的空格,批量删除数据中空格、换行符?,替换字段中字符串
  2. layui时间选择30分钟为单位_layui 时间选择器实现季度选择器
  3. Echarts多条折线图 y轴数值与实际值不符解决方法
  4. 如何编译并修改FBReader的package(安卓平台)
  5. 六石管理学:头目们为什么要忽略产品质量
  6. CSDN发布博文时出错的截图
  7. config.guess: unable to guess system type、config.sub: missing argument
  8. TeaVM奇怪的编译现象:同样代码,编译有时通过有时不通过
  9. Ffmpeg下载WINDOWS、MAC编译结果
  10. 百度的搜索好厉害,刚刚发文就能搜索到