I am trying to read a bitmap (.bmp) image header into a struct
in c.
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef struct _BITMAPFILEHEADER {
WORD Type;
DWORD Size;
WORD Reserved1;
WORD Reserved2;
DWORD OffBits;
} BITMAPFILEHEADER;
My code to read the bitmap file
FILE *fp;
BITMAPFILEHEADER header;
fp = fopen(file,"rb");
if (fp == NULL) {
printf("cannot open file!\n");
return 1;
}
fread(&header, sizeof(BITMAPFILEHEADER), 1, fp);
printf("Type: %02x\n", header.Type);
printf("Size: %04x\n", header.Size);
printf("Reserved: %02x\n", header.Reserved1);
printf("Reserved: %02x\n", header.Reserved2);
printf("Offset: %04x\n", header.OffBits);
What everything should equal:
Type: 0x424d
Size: 0x00060436
Reserved1: 0x00
Reserved2: 0x00
Offset: 0x00000436
What is actually happning (printf output):
Type: 0x424d
Size: 0x0006
Reserved: 0x002
Reserved: 0x436
Offset: 0x280000
(my os is 32-bit ubuntu if that helps)