Вы должны повторить до 256 вместо 4 здесь:
for (i=0;i<256;i++) //original code *for (i=0;i<4;i++)*
{
colorbuffer[i]=malloc(4*sizeof(unsigned char)); // colorbuffer[256][4]
}
Компилятор должен дать вам предупреждение, если вы хотите скомпилировать что-то вроде:
colorbuffer[0][0] = "255"
, потому что colorbuffer[0] [0] равно char , а не указатель на char .
for(i=0; i < ( (int)Datenheader.colors - 1 ); i++)
{
fread(&colorbuffer[i], sizeof(unsigned char),4,fp);
wo = ftell(fp);
}
Я думаю, вам не нужно здесь вычитать -1 из общего числаколичество цветов (например, если у вас будет 256 цветов, вы будете читать из файла только 255 цветов. Это означает, что 256-й цвет, который находится в массиве colorbuffer [255], вообще не будет инициализирован)
И, конечно, еще одна ошибка missingno сообщил вам об использовании & в fread.