C-读取和分配int值为结构字段



我正在尝试读取来自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));

,这确实是不施放任何分配功能的好习惯。

相关内容

  • 没有找到相关文章

最新更新