gpt4 book ai didi

c - 读取 int 值并将其分配给结构字段

转载 作者:行者123 更新时间:2023-11-30 15:02:27 25 4
gpt4 key购买 nike

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

    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,我不明白为什么......

最佳答案

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

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

不使用任何分配函数确实是个好习惯。

关于c - 读取 int 值并将其分配给结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com