2014-02-05 53 views
0

我正在嘗試恢復圖像數據,但不是在恢復之前將它寫入文本文件,而是想將它們放入數據庫中。 。現在,我將4字節(起始簇),2字節(標題),2字節(數據)寫入文本文件。關於字節大小的write()和memcpy()之間的區別

DWORD x = 0; 
WORD headerByte = 0; 
WORD dataByte = 0; 

write(jpg_info,&x,4); 
write(jpg_info,&headerByte,2); 
write(jpg_info,&dataByte,2); 

我的結局打開jpg_info.txt將是(例如)後: DB 21 00 00 95 05 00 00

然而,當我嘗試使用的memcpy()爲一個字符串,

char xChar[8]; 
char headerByteChar[4]; 
char dataByteChar[4]; 

memcpy(xChar, &x, 4); 
memcpy(headerByteChar, &headerByte, 2); 
memcpy(dataByteChar, &dataByte, 2); 

我的結果將是: DB 21 95 05

這是不是我想要的。我嘗試了各種方法,但我從來沒有得到同樣的重因爲x只使用2個字節的數據,我想剩下的2個字節是00,即使它只佔用2個字節的數據。

有無論如何這樣做嗎?

對不起,我一直在這裏呆了幾個星期!

+4

這與C#有什麼關係? –

回答

2

零字節被大多數C apis解釋爲字符串終止字符。這裏發生的事情是,memcpy會將零字節複製到字符數組中,但無論您用於處理數組,後來都會在第一個零字節處停止。

+0

非常感謝您的回覆!你有任何想法我可以用00替換零字節嗎?對不起,造成任何不便! – user3274048

+0

00是零字節。你有什麼代碼將字符數組寫入文件? – Joni

相關問題