代码之家  ›  专栏  ›  技术社区  ›  Martin

为什么我的文件中有损坏的输出?

  •  2
  • Martin  · 技术社区  · 16 年前

    我有一个简单的程序,我在两个MIW和Visual C++ 2008 Express中编译,它们都给出了一个大于88200的输出文件。当我设置S=0时,两个程序都是按预期工作的。我做错什么了?

    #include <fstream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int i;
        short s;
    
        fstream f;
    
        f.open("test.raw", ios_base::out);
    
        for(i = 0; i < 44100; i++)
        {
            s = i & 0xFFFF; // PROBLEM?
            f.write(reinterpret_cast<const char *>(&s), sizeof(s));
        }
    
        f.close();
    
        return 0;
    }
    

    1 回复  |  直到 16 年前
        1
  •  9
  •   CB Bailey    16 年前

    尝试:

    f.open("test.raw", ios_base::out | ios_base::binary);
    

    char \n 它们正在转换为标准的windows换行序列 \r\n . 以二进制模式打开文件将停止执行此转换。