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 ...
随机推荐
- FPGA/SOPC学习转载
转自小時不識月http://www.cnblogs.com/yuphone/archive/2010/08/27/docs_plan.html 新网址为:http://andrewz.cn [连载计划 ...
- 1003 Emergency(25 分)
As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...
- 【Asp.net入门11】第一个ASP.NET 应用程序-创建摘要视图
目前已经完成了应用程序的基本结构单元,受邀者也能够做出回复.这一节将添加一个支持组件,以显示收到的回复摘要,以便用户的朋友了解谁会参加晚会,并做出适当安排.在Solution Explorer中右键单 ...
- Html和websocket初识
一.web框架 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. import socket def handle_request(c ...
- linux 命令操作记录
1.查找名为 migrations 的文件夹/文件,并删除 find . -name "migrations" -type d #查找当前目录下文件夹名为 migrations 的 ...
- nltk30_Investigating bias with NLTK
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- jQuery读取KindEditor的值
$(document.getElementsByTagName("iframe")[0].contentWindow.document.body).html();
- pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法
pom.xml文件在添加了新的依赖后,一直报:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的错误,Maven ...
- 重定向(Redirect)相关的几个问题
转载自:http://hi.baidu.com/fboosjgvuvckore/item/405a1cd7be2c36e3795daa8b 此次挂接用户中心,交互大都通过重定向(Redirect)实现 ...
- 应用jfinal时要注意区分Db.query和Db.find
jfinal有一个特别好的地方,sql查询的时候可以直接查record.但是要注意query和find的区别. query返回的是List<object>,find返回的才是List< ...