3

MinGWとVisualC++ 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;
}

4

1 に答える 1

9

試す:

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

charたまたま改行文字に一致する sを書き出すと、\nそれらは標準の Windows 改行シーケンスに変換されます\r\n。ファイルをバイナリ モードで開くと、この変換が実行されなくなります。

于 2010-06-08T22:13:58.477 に答える