我編寫了一個程序來讀取BMP文件頭文件。 代碼如下:在C中讀取bmp頭文件
#include <stdio.h>
typedef unsigned short WORD;
typedef unsigned short BYTE;
typedef unsigned int DWORD;
typedef struct _WinBMPFileHeader {
WORD FileType;
DWORD FileSize;
WORD Reserved1;
WORD Reserved2;
DWORD BitmapOffset;
} WINBMPFILEHEADER;
int main(int argc, char* argv[]) {
WINBMPFILEHEADER *header = NULL;
FILE *fptr;
size_t bytes_read;
if (argc == 2) {
fptr = fopen(argv[1], "r");
bytes_read = fread(header, sizeof(WINBMPFILEHEADER), 1, fptr);
}
else
printf("The number of parameters is wrong.\n");
return 0;
}
當我運行程序我有,因爲FREAD的分段錯誤。 這個故障的原因是什麼?
你簡單地認爲該文件得到了正確打開。永遠不要以外部資源取得成功。如果fopen()失敗,它將返回null。如果您嘗試將該空值用作文件指針,則會出現分段錯誤。 –
'fread'讀取一個二進制流,但你的fopen確實表示r''而不是'rb''。另外,您在嘗試打開文件後不檢查錯誤,因此您如何知道文件實際打開成功並準備好讀取? – ray
也許這是一個dublicate:http://stackoverflow.com/questions/19745658/c-reading-bmp-files – PanGalactic