C++程序新手请求帮助~
答案:1 悬赏:0
解决时间 2021-01-07 21:49
- 提问者网友:雪舞兮
- 2021-01-07 10:35
C++程序新手请求帮助~
最佳答案
- 二级知识专家网友:纵马山川剑自提
- 2021-01-07 11:26
因为eof()这个函数不是读指针到文件尾就返回非0值,而是读指针到了文件尾再读,才返回非0值。
所以,你把最后一个字符读了之后,读指针已经到了文件尾,但是while(!in.eof())的结果是要继续读,所以再读,这时候in.eof()变成了非0值,而因为没有东西可以读,所以next还是上次读取的字符(也就是文件的最后一个字符),因此最后一个字符重复了一次。
如果你是一行一行地读,会多一行。
解决方法是,先读,读完再判断eof,如果是0,就写,否则不写。
大概如下
in.read
while(!in.eof())
{
out.write……
in.read……
}追问谢谢,找到问题了。
所以,你把最后一个字符读了之后,读指针已经到了文件尾,但是while(!in.eof())的结果是要继续读,所以再读,这时候in.eof()变成了非0值,而因为没有东西可以读,所以next还是上次读取的字符(也就是文件的最后一个字符),因此最后一个字符重复了一次。
如果你是一行一行地读,会多一行。
解决方法是,先读,读完再判断eof,如果是0,就写,否则不写。
大概如下
in.read
while(!in.eof())
{
out.write……
in.read……
}追问谢谢,找到问题了。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯