fopen , fread fwrite 函式讀寫二進位制檔案 問題總結
最近在解析 png 資料檔案, 發現一個檔案操作中容易忽略的問題,問題描述如下:
在使用 fread 讀二進位制檔案(png 圖片)的時候, 發現讀取到記憶體中的資料和 二進位制檔案中的資料不一致, 同樣, 在 使用 fwrite 寫二進位制檔案(png 圖片)的時候, 發現寫入到記憶體中的資料和 二進位制檔案中的資料和記憶體中的資料也不一致。
這個問題頭疼了兩天, 結果發現了一個很低階的錯誤。就是在讀寫二進位制檔案的時候,必須確保檔案的開啟形式是以 二進位制讀寫的形式開啟的, 即:檔案的開啟形式必須是 "rb", "wb" 要不然,讀寫資料的時候,就會出現錯誤。
|
函式使用說明:
1.函式功能
用來讀寫一個數據塊。
2.一般呼叫形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.說明
(1)buffer:是一個指標,對fread來說,它是讀入資料的存放地址。對fwrite來說,是要輸出資料的地址。
(2)size:要讀寫的位元組數;
(3)count:要進行讀寫多少個size位元組的資料項;
(4)fp:檔案型指標。