在不使用'的情况下更改像素的颜色;graphics.h';C语言库

在不使用'的情况下更改像素的颜色;graphics.h';C语言库,c,pointers,file-io,C,Pointers,File Io,为了通过考试,我需要学习这些东西 我试过这个代码,但没用。我怎样才能让它工作 #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <math.h> #include "img_header.h" 我确实直接处理了指针,但徒劳无功!代码仍在生成一个9像素的位图图像,颜色为(红色=205,蓝色=205,绿色=205),这似乎是一个奇怪的结果,因为当我编译代码时

为了通过考试,我需要学习这些东西 我试过这个代码,但没用。我怎样才能让它工作

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <math.h>
#include "img_header.h"   


我确实直接处理了指针,但徒劳无功!代码仍在生成一个9像素的位图图像,颜色为(红色=205,蓝色=205,绿色=205),这似乎是一个奇怪的结果,因为当我编译代码时,它打印出以下内容:

blue = 0
green = 72
red = 45 

blue = 255
green = 0 
red = 0 

Press any key to continue . . . 
代码是:

p_blue  = &(img.data[3 *(w*y + x) + 0]);
p_green = &(img.data[3 *(w*y + x) + 1]);
p_red   = &(img.data[3 *(w*y + x) + 2]);

printf("blue = %i \n" , *p_blue);  
printf("green = %i \n" , *p_green);
printf("red = %i \n" , *p_red);    

printf("\n\n");

*p_red   = 0;
*p_green = 0;
*p_blue  = 255;

printf("blue = %i \n" , *p_blue);  
printf("green = %i \n" , *p_green);
printf("red = %i \n" , *p_red);    

这里的问题是,您正在更改局部变量
红色
绿色
蓝色
。这些变化不会反映在
img

相反,去掉这些局部变量,直接处理指针,如

p_blue  = &(img.data[3 *(w*y + x) + 0]);
p_green = &(img.data[3 *(w*y + x) + 1]);
p_red   = &(img.data[3 *(w*y + x) + 3]);  //are you sure, this is 3. not 2?
然后,如果你这样做了

*p_red   = 0;
*p_green = 0;
*p_blue  = 255;
它将反映在
img


也就是说,请输入
malloc()
C

中的family的返回值,是否可以改进您的问题?什么不起作用?你试了什么?您得到了什么错误?没有错误,只是结果不是我想要的,我尝试了这两种方法:1)声明局部变量2)直接使用指针并更改其值。但是我仍然不能改变像素P(1,1)的颜色。你想要什么结果?你得到了什么结果?@K.F你是否检查了
fopen()
是否成功?我直接处理了指针,但没有成功!代码仍在生成一个9像素的位图图像,颜色为(红色=205,蓝色=205,绿色=205),这似乎是一个奇怪的结果,因为当我编译代码时,它打印出这样的结果:“蓝色=0绿色=72红色=45蓝色=255绿色=0红色=0按任意键继续…”,代码是:p_蓝色=&(img.data[3](wy+x)+0];p_-green=&(img.data[3(wy+x)+1];p_-red=&(img.data[3(wy+x)+2]);printf(“blue=%i\n”、*p_-blue);printf(“green=%i\n”、*p_-red);printf(“red=%i\n”、*p_-red);printf(“\n\n”);*p_-red=0;*p_-green=255;printf(“blue=%i\n”、*p\n”);printf(“blue=”绿色);printf(“red=%i\n”,*p_red);@K.F代码在注释中不可读。请使用粘贴和显示您的代码好吗?编译代码时,它会在特定文件夹中创建一个名为“My_picture.bmp”的图片,这意味着fopen()工作正常,或者?
*p_red   = 0;
*p_green = 0;
*p_blue  = 255;