我有以下代码。该文件包含一个位图图像,第一个字节是 0x424d。我希望第一个 printf 打印 BM,而不是打印 BM??。
此外,第二个 printf 打印 10,我希望它是一个更大的数字,因为文件大于 10 个字节。
fp = fopen("input.bmp", "r");
bmp_header_p = malloc(sizeof(bmp_header_t));
rewind(fp);
fread(bmp_header_p, sizeof(char), 14, fp);
printf("magic number = %s\n", bmp_header_p->magic);
printf("file size = %" PRIu32 "\n", bmp_header_p->filesz);
typedef struct {
uint8_t magic[2]; /* the magic number used to identify the BMP file:
0x42 0x4D (Hex code points for B and M).
The following entries are possible:
BM - Windows 3.1x, 95, NT, ... etc
BA - OS/2 Bitmap Array
CI - OS/2 Color Icon
CP - OS/2 Color Pointer
IC - OS/2 Icon
PT - OS/2 Pointer. */
uint32_t filesz; /* the size of the BMP file in bytes */
of the byte where the bitmap data can be found. */
} bmp_header_t;