Насколько я понимаю, нужно прочитать заголовок файла. Для этого вам нужно записать данные в имеющуюся структуру. Информация в файле BMP сохраняется в том же порядке, что и переменные в вашей структуре. Правильнее будет реализовать чтение, создав отдельную функцию, которая будет возвращать уже подготовленную структуру с нужными вам данными
BITMAPFILEHEADER *ReadBMFileHeader(FILE *fp)
{
BITMAPFILEHEADER *header = (BITMAPFILEHEADER *)malloc(sizeof(BITMAPFILEHEADER));
fread(&header.bfType, 2, 1, fp);
fread(&header.bfSize, 4, 1, fp);
fread(&header.bfReserve1, 2, 1, fp);
fread(&header.bfReserve2, 2, 1, fp);
fread(&header.bfOffBits, 4, 1, fp);
return header;
}
Итак, ваша основная функция будет выглядеть так:
int main(int argc, char *argv[])
{
FILE *fPointer = fopen(argv[1], "rb");
BITMAPFILEHEADER *bmFileHeader = NULL;
bmFileHeader = ReadBMFileHeader(fPointer);
fclose(fp);
return 0;
}
Для печати данных в HEX вы можете использовать это:
printf("%x\n", bmFileHeader->bfType);