所以基本上我有一个结构Pixel:
struct Pixel {
int r;
int g;
int b;
} Pixel;
要存储来自如下文件的RGB值:
0
240
233
2
234
42
其中每3个值分别为红色,绿色和蓝色值。
现在我已经创建了一个固定宽度和高度的数组(我已经知道了图像的宽度和高度),所以这是我到目前为止的代码:
#define WIDTH 640
#define HEIGHT 480
//new array of WIDTH rows, HEIGHT columns
struct Pixel *rgbArray[WIDTH][HEIGHT];
int x, y;
for(y = 0; y < HEIGHT; y++) {
for(x = 0; x < WIDTH; x++) {
struct Pixel *newPixel;
fscanf(fd, "%d\n%d\n%d\n", &newPixel->r, &newPixel->g, &newPixel->b);
rgbArray[x][y] = newPixel;
}
}
它没有错误地崩溃,任何人都可以帮我找出原因吗?我希望它不是简单的愚蠢; _;。
提前致谢
答案 0 :(得分:2)
第一个问题
struct Pixel *newPixel;
未初始化并使用inderiction运算符->
取消引用它是未定义的行为,这可能解释了您的崩溃,您似乎不需要指针,所以
struct Pixel newPixel;
应该没问题,然后
if (fscanf(fd, "%d%d%d", &newPixel.r, &newPixel.g, &newPixel.b) == 3)
rgbArray[x][y] = newPixel;
else
handle_error();
提供
struct Pixel rgbArray[WIDTH][HEIGHT];