我正在尝试读取来自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));
在Main中,我正在阅读矩阵的宽度和高度,并为每个像素分配值:
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和277 78 79,当我打印它时,而不是价值90,我有55个原因,出于某些未知原因,我不知道为什么...
您使用了错误的大小来分配结构:
matrixPixels = calloc(height,sizeof(RGB*));
for(row = 0; row < height; row++)
matrixPixels[row] = calloc(width,sizeof(RGB));
,这确实是不施放任何分配功能的好习惯。