gpt4 book ai didi

c - Ansi C 从 PPM 文件中读取卡住

转载 作者:行者123 更新时间:2023-11-30 17:41:49 26 4
gpt4 key购买 nike

我正在努力解决我的 ansi c 代码中的一些问题。我想读取 PPM 图片(P6),然后将其写入颜色(int)数组。一切都应该工作得很好,但不幸的是事实并非如此。

问题是,读数会在某个时刻卡住 - 每次都在同一时刻。

这是一段供阅读的代码:

int **red,**blue,**green;
//... Some code, allocations etc.
static unsigned char a[3];
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
fread(a, 1, 3, pic);
red[i][j] = a[0];
//green[i][j] = a[1];
//blue[i][j] = a[2];
}
}

当它读取值 24 时,它变得疯狂 - 在一切正常之前。该值被分配给红色,直到循环结束为止它是 24。

我不知道那里发生了什么,所以这就是为什么我向你们询问一些建议 - 这里可能出了什么问题以及如何修复它?

编辑

这是我的分配:

red = (int **)malloc(sizeof(int*) * x);
green = (int **)malloc(sizeof(int*) * x);
blue = (int **)malloc(sizeof(int*) * x);

for (i = 0; i < x; i++)
{
red[i] = (int*)malloc(sizeof(int) * y);
green[i] = (int*)malloc(sizeof(int) * y);
blue[i] = (int*)malloc(sizeof(int) * y);
}

编辑2:

X 为 473,Y 为 600

编辑3:

我按照指示做了,并使用 dropbox 上的源代码上传了图片(这次不同):code 。尽管图片不同,但它仍然在某些时候卡住。这次是 70。

最佳答案

在您链接到的代码中,您没有以二进制模式打开文件:“rb”

参见:what's the differences between r and rb in fopen

请注意,修复此问题可能意味着您的 fscanf 需要调整。

关于c - Ansi C 从 PPM 文件中读取卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20980129/

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