2011-04-19 2 views
0

je crée ici un peu d'espace de malloc et avec cela un tableau dynamique 2.Chaîne de Malloc et l'éditer

il a colorbuffer [0 à 256] [0 à 4]. et j'ai lu un fichier bmp et mettre les couleurs.

maintenant je veux changer les paramètres de couleur, mais ce isnt travaille

comme colorbuffer [0] [0] = "255"

maintenant la première couleur de la valeur rouge doit être 255

mais mon programme s'arrête. aussi comme colorbuffer [233] [2] = "23" la couleur 233 de la valeur verte doit être maintenant 23.

et je ne peux pas imprimer dehors comme printf ("couleur senitive% d", colorbuffer [0] [1]);

QUELQUES PASSAGES HORS DE LA SOURCE ->http://pastebin.com/fRD5w1XC

espère que vous pouvez me aider serait génial merci

modifier // Terminé Fail a été le & lors de la lecture et d'écriture à & colorbuffer ! merci stackoverflow!

Répondre

1

changement

fread(&colorbuffer[i] //With & 

dans

fread(colorbuffer[i] //No & 

Le programme actuel est Surgraver vos table colorbuffer et causer toutes sortes d'ennuis par la suite à cause de cela.

+0

si je supprime le & le programme vient de s'arrêter après le démarrage !!! – Mysterigs

+0

Il s'avère que vous avez eu plus d'un bug !. Vérifiez la réponse d'Ansi pour savoir pourquoi vous obtenez une erreur de segmentation après avoir changé le '&' – hugomg

0

Mes jours C est révolue depuis longtemps, mais ...

void* buffer = malloc(sizeof(uchar) * numOfColors * 4); 

uchar** colors = (uchar**)buffer; 

colors[0][1] = 1; 

free(buffer); 
1

Vous devriez itérer jusqu'à 256 au lieu de 4 ici:

for (i=0;i<256;i++) //original code *for (i=0;i<4;i++)* 
    { 
    colorbuffer[i]=malloc(4*sizeof(unsigned char)); // colorbuffer[256][4] 
    } 

compilateur devrait vous donner un avertissement Si vous souhaitez de compiler quelque chose comme:

colorbuffer[0][0] = "255" 

parce colorbuffer [0] [0] est omble pas un pointeur vers char.

for(i=0; i < ((int)Datenheader.colors - 1); i++) 
    { 
    fread(&colorbuffer[i], sizeof(unsigned char),4,fp); 
    wo = ftell(fp); 
    } 

Je suppose que vous ne avez pas besoin de soustraire -1 ici de nombre de couleurs totale (par exemple, si vous avez 256 couleurs vous lire le fichier seulement 255 couleurs. Cela signifie que la couleur 256e, qui est en tableau colorbuffer [255] ne sera pas en initialisée du tout)

Et bien sûr, un autre bug qui missingno rapporté à vous de & utilisation dans fread.

+0

"colorbuffer [0] [0] n'est pas un pointeur sur char." comment puis-je mettre le alors dans la couleur 30 la valeur rouge à 200? donc je veux dire le colorbuffer [30] [0] = 200? ... – Mysterigs

+0

@Mysterigs Oui, c'est juste utiliser colorbuffer [30] [0] = 200. –

+0

génial j'ai trouvé le bug ... c'était le & ce que @missingno veut dire !!! Je l'utilise en lecture et écris le &. maintenant je l'ai enlevé et ça marche !! – Mysterigs