读取并将int值分配给struct字段

时间:2016-12-09 21:00:49

标签: c matrix struct pixels

我正在尝试从stdin读取像素矩阵并打印它。我正在使用像素的结构,定义如下:

    typedef struct pixel {
        int R, G, B;
    } RGB;

为其分配空间

    matrixPixels = (RGB**)calloc(height,sizeof(int*));
    for(row = 0; row < height; row++)
       matrixPixels[row] = (RGB*)calloc(width,sizeof(int));

主要是我正在读取矩阵的宽度和高度,并为每个像素分配值,如下所示:

    for(row = 0; row < height; row++) 
        for(column = 0; column < width; column++) {
            scanf("%d %d %d ", &matrixPixels[row][column].R, &matrixPixels[row][column].G, &matrixPixels[row][column].B);

现在,我的问题是当我尝试使用

打印矩阵时
    for(row = 0; row < height; row++)
       for(column = 0; column < width; column++) 
          printf("%d %d %d", matrixPixels[row][column].R, matrixPixels[row][column].G, matrixPixels[row][column].B);

有些值不是它们应该是的...例如,如果宽度和高度分别为3和2而我正在阅读87 88 255 40 60 50 70 80 90 55 56 57 66 67 68 77 78 79,当我打印它时,而不是值90,我有55因为一些未知的原因,我无法弄清楚为什么......

1 个答案:

答案 0 :(得分:1)

您使用了错误的大小来分配结构:

matrixPixels = calloc(height,sizeof(RGB*));
    for(row = 0; row < height; row++)
       matrixPixels[row] = calloc(width,sizeof(RGB));

不投出任何分配功能是非常好的习惯。