从文本文件读取直到 EOF:解决最后一行重复
提供的 C 代码从文本文件读取整数,直到遇到文件结束 (EOF) 指示器。但是,它错误地将文件上的最后一个整数打印两次。这是由于程序循环结构中处理 EOF 指示符的方式所致。
在执行期间,程序进入一个循环,该循环将持续到检测到 EOF 指示符为止。当循环遍历文件时,它从文件中获取整数“x”并将其打印到控制台。然而,在读取文件中的最后一个整数后,遇到了 EOF 指示符。
出现问题的原因是循环条件在获取最后一个整数“x”后计算 EOF。这意味着循环将继续使用上一次迭代中加载的相同“x”值,从而有效地将其打印两次。
要解决此问题,应修改循环条件以检查 EOF 指示符在尝试获取整数之前。这可以通过使用稍微不同的循环结构来实现:
while (iFile) { int x; iFile >> x; if (iFile) { cerr << x << endl; } }
在这个修改后的循环中,“iFile”对象用作循环条件,它隐式检查 EOF 指示符。如果“iFile”为 true(表示文件不在 EOF),程序将获取并打印一个整数。如果“iFile”为 false(表示 EOF),则退出循环。
通过实现此调整,程序会从文本文件中读取整数,直到到达 EOF 并将每个整数打印一次,解决了最后一行被打印两次。
以上是为什么我的 C 代码在读取文本文件直到 EOF 时会打印两次文本文件的最后一行?的详细内容。更多信息请关注PHP中文网其他相关文章!