将像素读入数组以进行结构崩溃程序

时间:2016-01-25 20:25:43

标签: c struct

所以基本上我有一个结构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;
    }
}

它没有错误地崩溃,任何人都可以帮我找出原因吗?我希望它不是简单的愚蠢; _;。

提前致谢

1 个答案:

答案 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];