fprintf(file, "%d %d %d", array[0], array[1], array[2]);
このステートメントを機能させるには、「w」モードではなく「wb」モードでファイルを開く必要があります。バイナリ モードでは構文はどのように機能しますか?
ファイルを開くときにこの関数を使用していると思います:
FILE *fopen(const char *path, const char *mode);
Linux でプログラミングしている場合b
は、何の効果もないため、無視されます。マンページから:
モード文字列には、文字 'b' を最後の文字として、または上記の 2 文字の文字列のいずれかの文字間の文字として含めることもできます。これは厳密に C89 との互換性のためであり、効果はありません。'b' は、Linux を含むすべての POSIX 準拠システムでは無視されます。(他のシステムでは、テキスト ファイルとバイナリ ファイルの扱いが異なる場合があります。バイナリ ファイルに I/O を実行し、プログラムが Unix 以外の環境に移植される可能性がある場合は、'b' を追加することをお勧めします。)
Windowsの場合(ソースはこちら):
b : バイナリ (未翻訳) モードで開きます。復帰文字と改行文字を含む翻訳は抑制されます。
結論:
C コードのバイナリ データへの移植可能なアクセスが必要な場合は、互換性の理由から 'b' を使用します。
最初に fopen FILE *fp = fopen("file.bin", "r+"); を使用してファイル ポインターを取得します。次に、fread を使用して読み取り、fwrite を使用して .. 書き込みを行います。これも参照して ください。また、マニュアルを注意深く読んでください。また、fread と fwrite が整数を返すことに注意してください。これをチェックして、読み書きされた量を正確に確認してください。