关于C语言读取文件结尾的问题
请问,我弄个小程序,从A文件中读取内容输出到B文件,原先读A文件结尾的判断条件为EOF,可是后来A文件末尾多了个“]”符号,在不删除它的情况下,我应该怎么做文件结束条件啊...
请问,我弄个小程序,从A文件中读取内容输出到B文件,原先读A文件结尾的判断条件为EOF,可是后来A文件末尾多了个“]”符号,在不删除它的情况下,我应该怎么做文件结束条件啊?谢谢各位
展开
展开全部
不做任何改动
文件结束时相关函数返回EOF, 并不是说文件里有个符号是EOF, 根本就不存在所谓的文件结束符,而是到了文件结束,就什么也读不到了,这种情况下函数返回一个EOF,这个EOF并不是文件的内容(至于判断文件结束,不同的系统有不同的底层实现,这不是C语言的事情)
文件结束时相关函数返回EOF, 并不是说文件里有个符号是EOF, 根本就不存在所谓的文件结束符,而是到了文件结束,就什么也读不到了,这种情况下函数返回一个EOF,这个EOF并不是文件的内容(至于判断文件结束,不同的系统有不同的底层实现,这不是C语言的事情)
追问
那请问,我该怎么办啊?有这个符号就死循环啊
追答
贴代码看看
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言程序编译不是c语言学习的范围,你说的这个情况是通过编译程序将你写的源程序*.c编译成可执行文件,如果你需要修改就必须有这个程序的源代码,也就是你写的*.c。修改只能在这上面修改。所以程序的源代码都是很重要的,需要好好保存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
EOF是特殊符号,永远在文件最后一个。你的程序不用任何改动,判断EOF即可。
追问
可是不是这样的呀,要是有这个符号,就是死循环啦,没它就一切正常。
我是多去多行数据,判断的条件就是读完每行是否=EOF,现在就不行了
追答
只要行末是EOF就是文件结束了咯,不是很明白你是怎么判断的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你能是你顺序错了把,要不就是你把eof读成char了
int temp;
while((temp=fgetc(fp))!=EOF){
...
...
}
试试
int temp;
while((temp=fgetc(fp))!=EOF){
...
...
}
试试
追问
我用的是这个语句:多行数据
while(fscanf(fa,"%d%s%s\n",&a1,a2,a3)!=EOF
和您的应该是一个意思吧
追答
fscanf return0代表读完了
说以你试试
while(fscanf(fa,"%d%s%s\n",&a1,a2,a3)!=0)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询