关于C语言读取文件结尾的问题

请问,我弄个小程序,从A文件中读取内容输出到B文件,原先读A文件结尾的判断条件为EOF,可是后来A文件末尾多了个“]”符号,在不删除它的情况下,我应该怎么做文件结束条件啊?谢谢各位

可以使用while循环
如:
while(fscanf(fp,"%s",str)!=EOF) 其中这个判断 EOF 就是是否读取到文件结尾
是 end of file的缩写.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-10
不做任何改动

文件结束时相关函数返回EOF, 并不是说文件里有个符号是EOF, 根本就不存在所谓的文件结束符,而是到了文件结束,就什么也读不到了,这种情况下函数返回一个EOF,这个EOF并不是文件的内容(至于判断文件结束,不同的系统有不同的底层实现,这不是C语言的事情)追问

那请问,我该怎么办啊?有这个符号就死循环啊

追答

贴代码看看

本回答被网友采纳
第2个回答  2020-05-19
c语言程序编译不是c语言学习的范围,你说的这个情况是通过编译程序将你写的源程序*.c编译成可执行文件,如果你需要修改就必须有这个程序的源代码,也就是你写的*.c。修改只能在这上面修改。所以程序的源代码都是很重要的,需要好好保存。
第3个回答  2012-08-10
EOF是特殊符号,永远在文件最后一个。你的程序不用任何改动,判断EOF即可。追问

可是不是这样的呀,要是有这个符号,就是死循环啦,没它就一切正常。
我是多去多行数据,判断的条件就是读完每行是否=EOF,现在就不行了

追答

只要行末是EOF就是文件结束了咯,不是很明白你是怎么判断的。

第4个回答  2012-08-10
你能是你顺序错了把,要不就是你把eof读成char了
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)

本回答被提问者采纳
相似回答