Can';t从数组中获取值(c)

Can';t从数组中获取值(c),c,arrays,C,Arrays,我正在从一个ppm文件中读取一个代码,并将每个像素的值存储在p1中,像素数组,它是一个.red.green.blue(int)的结构。然而,我成功地为图片创建了一个“负滤镜”。我试图通过取红、绿、蓝像素的平均值来获得黑白图像。 我有像素p1、像素p2(负滤波器)和int p3(黑白)。但是,每一个p3=….的动作都将停止响应。比如 for (i = 0; i < WIDTH; i++) { for (j = 0; j < HEIGHT; j++) {

我正在从一个ppm文件中读取一个代码,并将每个像素的值存储在p1中,像素数组,它是一个.red.green.blue(int)的结构。然而,我成功地为图片创建了一个“负滤镜”。我试图通过取红、绿、蓝像素的平均值来获得黑白图像。 我有像素p1、像素p2(负滤波器)和int p3(黑白)。但是,每一个p3=….的动作都将停止响应。比如

    for (i = 0; i < WIDTH; i++) {
            for (j = 0; j < HEIGHT; j++) {
                p3[i][j] = ((p1[i][j].red + p1[i][j].green + p1[i][j].blue)/3);
            }
    }
(i=0;i{ 对于(j=0;j

(i=0;i{ 对于(j=0;j 但是,当我将int p3[WIDTH][HEIGHT]更改为char p3[WIDTH][HEIGHT]时,程序会运行,但给出错误的输出。int和char都已成功编译。有人能帮我吗?谢谢

编辑: 我希望通过将.ppm值输入到像素p1[WIDTH][HEIGHT]中,在.red、.green和.blue中,我可以从.ppm创建图片的.pgm黑白扩展。然后计算RGB的平均值,并在写入.pgm之前将其分配到int p3中

我在使用int p3时得到的结果是,当我运行.exe停止工作而没有给出任何错误时,它崩溃了

当我使用char p3时,它运行得很好,但是它给所有像素的平均值都提供了负值。(由于@egoteclair,这已经通过在字符前面添加未签名字符得到了帮助)


我的新问题是为什么不能用int代替无符号字符?

正常字符大小是8位。第一位将用于符号扩展。在24位png文件中,每个颜色字段包含8位

24 / 3 = 8

因此,尝试使用无符号字符而不是字符。这允许您使用完整的8位字符。

寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请看:如何创建一个@SouravGhosh抱歉,我是新来的。谢谢你的提醒,我现在就编辑代码。成功了!但你能解释一下为什么整数不起作用吗?谢谢你
24 / 3 = 8