首页 > 后端开发 > C++ > 在 C 中从文件中读取整数时如何防止重复读取?

在 C 中从文件中读取整数时如何防止重复读取?

Mary-Kate Olsen
发布: 2025-01-02 19:11:40
原创
145 人浏览过

How to Prevent Double Reads When Reading Integers from a File in C  ?

从文件中读取整数直到 EOF:避免重复读取

提供的 C 代码从文本文件中读取整数,直到到达末尾文件的大小 (EOF)。但是,它会读取最后一行两次,导致输出重复。发生这种情况的原因是:

  • 读取最后一个整数(示例中为 30)并检查 EOF 后,EOF 标记保持未读状态。
  • 在下一次迭代中,相同的整数 ( 30) 仍然存储在输入缓冲区中,并且正确检测到 EOF。
  • 整数输出两次:一次来自上一次迭代的缓冲区并再次从当前的 EOF 检查开始。

解决方案:

要解决此问题,请使用在读取 EOF 时退出的 while 循环:

while (true) {
    int x;
    iFile >> x;
    if (iFile.eof()) break;
    cerr << x << endl;
}
登录后复制

在此循环中:

  • 整数被读入
  • 如果到达 EOF,则退出循环。
  • 否则,整数将输出到标准错误。

此方法确保最后一个整数仅打印

注意:

原始代码还有另一个潜在问题:尝试读取空文件。这可以通过在 if 语句中嵌入读取操作来解决,该语句检查流是否打开且不在 EOF。

以上是在 C 中从文件中读取整数时如何防止重复读取?的详细内容。更多信息请关注PHP中文网其他相关文章!

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