#include struct BMPFILEHEADER { char bfType[2]; unsigned long bfSize; short bfReserved[2]; unsigned long bfOffBits; }; struct BMPINFOHEADER { unsigned long biSize; unsigned long biWidth; unsigned long biHeight; }; //typedef struct BMPFILEHEADER bmpFileHeader; // 1 typedef struct BMPINFOHEADER bmpInfoHeader; int main() { FILE *fp_r; fp_r = fopen("girl.bmp", "rb"); //bmpFileHeader bmp_file_hdr; // 1 //BMPFILEHEADER bmp_file_hdr; // 2 (?) struct BMPFILEHEADER bmp_file_hdr; // 3 bmpInfoHeader bmp_info_hdr; fread(&bmp_file_hdr.bfType, 1, sizeof(bmp_file_hdr.bfType), fp_r); fread(&bmp_file_hdr.bfSize, 1, sizeof(unsigned long), fp_r); fread(&bmp_file_hdr.bfReserved, 1, sizeof(bmp_file_hdr.bfReserved), fp_r); fread(&bmp_file_hdr.bfOffBits, 1, sizeof(unsigned long), fp_r); fread(&bmp_info_hdr.biSize, 1, sizeof(unsigned long), fp_r); fread(&bmp_info_hdr.biWidth, 1, sizeof(unsigned long), fp_r); fread(&bmp_info_hdr.biHeight, 1, sizeof(unsigned long), fp_r); //fread(&bmp_file_hdr, 1, sizeof(bmp_file_hdr), fp_r); //error!! /* printf("[debug] size : %d\n", sizeof(bmp_file_hdr) ); printf("[debug] size : %d\n", sizeof(bmp_file_hdr.bfType) ); printf("[debug] size : %d\n", sizeof(bmp_file_hdr.bfSize) ); printf("[debug] size : %d\n", sizeof(bmp_file_hdr.bfReserved) ); printf("[debug] size : %d\n\n", sizeof(bmp_file_hdr.bfOffBits) ); */ printf("[ BMP FILE HEADER ]\n"); printf("Type :\t%c%c \n", bmp_file_hdr.bfType[0], bmp_file_hdr.bfType[1]); printf("TotalSize :\t%lu\n", bmp_file_hdr.bfSize); printf("Reserved :\t%d[1], %d[2]\n", bmp_file_hdr.bfReserved[0], bmp_file_hdr.bfReserved[1]); printf("Offset :\t%lu\n\n", bmp_file_hdr.bfOffBits); printf("[ BMP INFO HEADER ]\n"); printf("Header Size :\t%lu\n", bmp_info_hdr.biSize); printf("Img Width :\t%lu\n", bmp_info_hdr.biWidth); printf("Img Height :\t%lu\n", bmp_info_hdr.biHeight); printf("\n"); fclose( fp_r ); return 0; }