2017-02-12 2 views
-1

私はCでビットマップを作成しようとしています。まず、他のビットマップファイルからヘッダとすべてのピクセルデータをコピーします。問題は数字 '10'で、読んでいるときはちょうど1バイトですが、2バイトと書いています。私は/ r/nものについて知っていますが、どのようにペイントすれば1文字として保存できますか?Cでビットマップを作成する - 1バイトとして/ r/nを書き込む方法は?

unsigned char* header = malloc(54); 
fread(header, sizeof(unsigned char), 54, file); 

を、このように書く::

私は、このようにヘッダを読んでいる

fwrite(img->fileHeader, sizeof(unsigned char), 54, file); 
+1

あなたは 'イオス:: binary'フラグを使用してストリームを開く必要があります。 –

答えて

1

あなたは常に、非テキストファイルを扱うときios::binaryフラグを使用する必要があります。

ofstream myfile; 
myfile.open ("example.bin", ios::out | ios::app | ios::binary); 

Windowsを使用していて、ios::binary fあなたのストリームをここで開くと遅れる:

13 10読み取り時にシーケンスがメモリに壊れています:10に変換されます。データがバイナリであれば、そのシーケンスを手に入れるのは無駄だが、起こる可能性がある

10は、書き込み時に13 10(CR + LF)に変換されます。それが起こりやすく、出力ファイルが壊れてしまいます。

注:それは壊れていた場合でも、テキストとして読み込み、バイナリの修正としてバック汚職を書く(または1013 10を置き換える)

+0

ありがとうございました! –

関連する問題