我正在尝试从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因为一些未知的原因,我无法弄清楚为什么......
答案 0 :(得分:1)
您使用了错误的大小来分配结构:
matrixPixels = calloc(height,sizeof(RGB*));
for(row = 0; row < height; row++)
matrixPixels[row] = calloc(width,sizeof(RGB));
不投出任何分配功能是非常好的习惯。