c 语言文本文件判断是否到达结尾的问题
在c语言中,判断文件结尾有两种方法,第一种是使用feof()函数,feof(fp)用于测试fp所指向的文件的当前状态是否为“文件结束”。如果是,函数则返回的是非0值(真),否则为0(假),要注意的是,feof()是先读文件在判断是不是到达文件结束,所以当使用feof()作为循环判断条件的话,就需要注意一种情况,就是当文件为空的时候,它也会读取一次文件内容然后再跳出循环,所以有可能会读取到一些不可知的内容出来。
EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,ASCII代码值的范围是0~255,EOF的16进制代码为0xFF(十进制为-1),因此可以用EOF作为文件结束标志。但是如果文件格式为二进制文件,就不适合用EOF来判断文件到达结尾了,因为有可能文件中也存在一个数据为0xFF,这样当读取到这个数据是,就无法判断是到达文件结尾,还是读取到的是文件的内容了。
这里需要解决的就是feof()作为循环条件遇到空文件时的情况,网上找了好多,但是都没有实现,然后自己受到了点启发。想到了一个笨办法,这里贴下代码
void read(void)
{
int ch;
FILE *fp;
if((fp=fopen("txt.txt","rt"))==NULL)
{
printf("读取信息失败,请重试");
getchar();
exit();
}
ch=fgetc(fp); //首先从文件中读取,判断是不是文件结束符EOF
if(ch==EOF)
{
printf("什么都没有");
fclose(fp);
return; //如果是直接关闭文件退出
}
rewind(fp); //这步很重要,如果判断不是,让文件内部的指针重新指向文件开头
while(!feof(fp))
{
... //正常读取文件内容
}
c 语言文本文件判断是否到达结尾的问题的更多相关文章
- c语言 如何判断是不是 可显字符
c语言 如何判断是不是 可显字符int isprint(int c)若可显示返回1,否则0:要包含头文件ctype.h
- 李洪强漫谈iOS开发[C语言-043]-判断较早日期
李洪强漫谈iOS开发[C语言-043]-判断较早日期
- C 语言实例 - 判断回文数
C 语言实例 - 判断回文数 判断一个数是否为回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=,则称n为一回文数:但若n=,则n不是回文数 ...
- C 语言实例 - 判断数字为几位数
C 语言实例 - 判断数字为几位数 用户输入数字,判断该数字是几位数. 实例 #include <stdio.h> int main() { long long n; ; printf(& ...
- C 语言实例 - 判断字母
C 语言实例 - 判断字母 C 语言实例 C 语言实例 用户输入一个字符,判断该字符是否为一个字母. 实例 #include <stdio.h> int main() { char c; ...
- C 语言实例 - 判断正数/负数
C 语言实例 - 判断正数/负数 用户输入一个数字,判断该数字是正数还是负数或是零. 实例 #include <stdio.h> int main() { double number; p ...
- C 语言实例 - 判断奇数/偶数
C 语言实例 - 判断奇数/偶数 C 语言实例 C 语言实例 以下实例判断用户输入的整数是奇数还是偶数. 实例 #include <stdio.h> int main() { int nu ...
- C 语言实例 - 判断元音/辅音
C 语言实例 - 判断元音/辅音 C 语言实例 C 语言实例 判断输入的字母是元音,还是辅音. 英语有26个字母,元音只包括 a.e.i.o.u 这五个字母,其余的都为辅音.y是半元音.半辅音字母,但 ...
- Django 模板语言 条件判断
Django 模板语言 条件判断 ############### 条件 ################## # view 文件 def func(request): ... return rende ...
随机推荐
- ECharts.js 简单示例
ECharts.js学习(一) 简单入门 EChart.js 简单入门 最近有一个统计的项目要做,在前端的数据需要用图表的形式展示.网上搜索了一下,发现有几种统计图库. MSChart 这个是Vi ...
- C++ 注册表编程
原文 C++ 注册表编程 1.基础知识 注册表的组织方式跟文件目录比较相似,主要分为根键.子键和键值项三部分,与文件目录对应的话就是根目录.子目录和文件.分别介绍一下这三部分: (1)根键.分为5个, ...
- windows10 conda2 使用caffe训练训练自己的数据
首先得到了https://blog.csdn.net/gybheroin/article/details/72581318系列博客的帮助.表示感激. 关于安装caffe已在之前的博客介绍,自用可行,h ...
- Shell记录-Shell命令(定时任务)
在Linux系统中, at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron(crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因 ...
- 模块型css样式
<div id="dowork"> <div id="dowork_on">۞作业进行中</div> <div id= ...
- Zabbix监控PV和UV
Zabbix-server:172.21.97.153 Zabbix-agent(Nginx):172.17.27.61 # Nginx日志如下: # head -3 Syz.access.log w ...
- 阮一峰:自适应网页设计(Responsive Web Design)别名(响应式web设计)
随着3G的普及,越来越多的人使用手机上网. 移动设备正超过桌面设备,成为访问互联网的最常见终端.于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页? 手机的屏幕比较小,宽度通 ...
- python 分布式进程体验
抽了点时间体验了一把python 分布式进程,有点像分布式计算的意思,不过我现在还没有这个需求,先把简单体验的脚本发出来,供路过的各位高手指教 注:需要先下载multiprocessing 的pyth ...
- 在WindowsServer2008服务器上安装SQLServer2008R2 Express版
登录服务器 使用远程桌面登录Windows Server 2008 安装前的准备工作 下载SQL Server安装程序 下载Microsoft SQL Server2008 R2 RTM - Ex ...
- Vim,Emacs排名不分先后
关键词:Vim,Emacs,Vim和Emacs之争 一同时提到vim和emacs,就几乎一定引发关于哪个更好的圣战.据说这个圣战从很早就开始了,偶尔还会有windows下的ultraedit的用户来凑 ...