zoukankan      html  css  js  c++  java
  • C/C++文件之eof()

    在这里,大家可能有一个误区,认为eof()返回true时是读到文件的最后一个字符,其实不然,eof()返回true时是读到文件结束符0xFF,而文件结束符是最后一个字符的下一个字符如下图所示:

    因此,当读到最后一个字符时,程序会多读一次(编译器会让指针停留在最后一个字符那里,然后重复读取一次,这也就是就上面最后一个字符会输出两次的原因。至于是不是所有的编译器都这样处理我就不太清楚了,我使用的VC6,VC8似乎都是这样的)

    解决办法:

    1.提前读一个出来,

    eof标志是在最后一次读取数据时置位的,这一次并没有读数据,所以你不应该输出数据。
    对输入流的状态的检测应该紧跟在输入操作之后,不应该对输入失败的进行处理:
    fin.getchar(temp);
    while (!fin.eof())
    {
        cout<<temp;
        fin.getchar(temp);
    }

    2.用这句判断文件结束:fin.peek() == EOF

  • 相关阅读:
    emberjs初学记要
    自我的一点介绍(七夕礼物)
    JavaScript数据类型
    Vue+Webpack项目配置
    Git知识点整合
    Log4j简单配置解析
    如何明智地向程序员提问
    Navicat连接mysql报错1251
    多表查询sql语句
    PLSQL面向对象
  • 原文地址:https://www.cnblogs.com/dakou/p/3007237.html
Copyright © 2011-2022 走看看