2017-02-12 23 views
-1

我想在C中創建位圖。首先,我想要做的是從其他位圖文件複製標題和所有像素數據。問題是數字'10',當我讀它只是1個字節,但是當我寫它是2個字節。我知道關於/ r/n的東西,但是例如Paint如何將它保存爲1個字符?在C中創建位圖 - 如何將/ r/n寫爲1個字節?

我讀頭以這樣的方式

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

,並以這種方式寫:

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

你必須用'的ios :: 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)。這很可能會發生並破壞您的輸出文件。

注意:即使是貪官,閱讀文本和寫回二進制修復損壞(或10更換13 10

+0

非常感謝! –

相關問題