首页 > 后端开发 > C++ > 为什么我的 C 代码在读取文本文件直到 EOF 时会打印两次文本文件的最后一行?

为什么我的 C 代码在读取文本文件直到 EOF 时会打印两次文本文件的最后一行?

Barbara Streisand
发布: 2024-12-30 04:16:09
原创
980 人浏览过

Why Does My C   Code Print the Last Line of a Text File Twice When Reading Until EOF?

从文本文件读取直到 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板