0
Im'm загружает цвет пикселя и записывает однобайтную переменную. Когда я хочу прочитать этот цвет (для красного пикселя), получим результат: 255 Однако значение равно: 4294967296. Из этого следует, что значение было записано в 32-байтной переменной. Почему это происходит?C Чтение цветов из растрового изображения
struct RGBpix{
char R;
char G;
char B;
}typedef RGB;
...
RGB **data=(RGB **)malloc(sizeof(RGB *)*Picture.biWidth);
for(i = 0; i < Picture.biWidth; i++){
data[i] = (RGB*) malloc(sizeof(RGB) *Picture.biHeight);
}
...
for(i=0;i<Picture.biWidth;i++){
for(j=0;j<Picture.biHeight;j++){
fread(&data[i][j].R, 1, 1,bmpFile);
fread(&data[i][j].G, 1, 1,bmpFile);
fread(&data[i][j].B, 1, 1,bmpFile);
}
}
printf("%Ld", data[0][1].R);
*** Dat kast from 'void *' !!! *** – 2013-05-08 18:18:08
Ваш спецификатор формата для 'printf()' недействителен и приводит к неопределенному поведению. Флаг '' L '' действителен только для спецификаторов преобразования a, A, e, E, f, g или G и сообщает 'printf()', что аргумент является 'long double'. Попробуйте изменить это на 'printf ("% d \ n ", данные [0 -] [1] .R)' и посмотреть, что произойдет. –