gpt4 book ai didi

c - 读取bmp文件并将数据发送到数组

转载 作者:行者123 更新时间:2023-11-30 19:05:43 25 4
gpt4 key购买 nike

我正在尝试获取有关 bmp 文件的一些信息。例如,我想要获取的内容之一是文件的高度。为此,我使用以下代码行:

char params[size];
fread (params, 1, size, bmpfile);
*height = *((int *)(params + 22));

但是,每当我打印高度时,我都会得到 0。为什么我所做的不正确,我应该更改什么?预先感谢您的帮助!

最佳答案

fread (params, 1, size, bmpfile);

第二个参数应该是元素大小,第三个参数应该是元素计数。你应该把它写成

fread (params, size, 1, bmpfile);

尽管结果是相同的,但 fread 的返回值会不同。其余的基本上是正确的。添加错误检查以查找问题:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
FILE *bmpfile = fopen("c:\\test\\test.bmp", "rb");
if(!bmpfile)
{
printf("file not found\n");
return 0;
}

char params[54] = { 0 };
int result = fread(params, sizeof(params), 1, bmpfile);
if(result != 1)
{
printf("not bitmap file\n");
return 0;
}

if(strncmp(params, "BM", 2) != 0)
{
printf("not bitmap file\n");
return 0;
}

int width = *(int*)(params + 18);
int height = *(int*)(params + 22);
int bitcount = *(int*)(params + 28);
printf("%d %d %d\n", width, height, bitcount);
fclose(bmpfile);
return 0;
}

关于c - 读取bmp文件并将数据发送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49308659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com