我想讀取位於頭部的位圖,但fread正在爲我跳過字符。Fread跳過字符讀入對象
我使用這個的typedef在我的頭:
#include <windows.h> // Used for other
#include <cstdio>
typedef struct tagBITMAPHEADER{
WORD wFileType;
DWORD dwFileSize;
WORD dwReserved;
WORD dwReserved2;
DWORD dwBmpDataOffset;
DWORD dwBmpHeaderSize;
DWORD dwWidth;
DWORD dwHeight;
WORD wPlanes;
WORD wBitsPerPixel;
DWORD dwCompression;
DWORD dwBitmapDataSz;
DWORD dwHRes;
DWORD dwVRes;
DWORD dwColors;
DWORD dwImpColors;
} BITMAPHEADER, *PBITMAPHEADER;
而且在我的代碼,我只使用一個簡單的fopen和FREAD二進制。
#include "ImageLoader.h"
BITMAPHEADER pbhFileInfo;
FILE *fBitmap = fopen(FileName,"rb"); //Open file in read/binary
if (fBitmap) //File is now open
{ fread(&pbhFileInfo,sizeof(BITMAPFILEHEADER),1,fBitmap);
fclose(fBitmap);
}
雖然我的位圖 '424DF25A0D'(十六進制)開始,前兩個變量讀取似乎跳過 'F25A'
wFileType =覆蓋0x4D42 dwFileSize = 0x0000000d
任何想法可能會起來?
在此先感謝。
所以你偶然發現了struct padding。你還應該閱讀關於排序。如果你真的希望你的代碼獨立於數據大小,struct padding,並且處理所有類型的字節順序,你應該手動解碼這些信息並把它放在你的頭文件結構中。這顯然是更多的工作,但也更可靠。 – 2010-01-11 03:18:03