Et tu veux déjà manipuler des tableaux dynamiques à 3 dimensions ? T'es pas un peu tombé sur la tête, là ?Envoyé par Funraill.net
Reprenons.
Le tableau dont tu as besoin as-t-il une taille connue à la compilation ou à l'exécution ?
Et tu veux déjà manipuler des tableaux dynamiques à 3 dimensions ? T'es pas un peu tombé sur la tête, là ?Envoyé par Funraill.net
Reprenons.
Le tableau dont tu as besoin as-t-il une taille connue à la compilation ou à l'exécution ?
Pas de Wi-Fi à la maison : CPL
Il y a confusion ici.Envoyé par Funraill.net
De une, tu ne peux pas declarer un tableau de taille variable.
D'ailleurs ton compilateur a du te le signaler dans sa grande gentillesse.
Soit la taille est connue par avance, auquel cas tu le declares avec un taille constante, soit la taille est variable, auquel cas il faut allouer.
Et de toute facon, vu que ce tableau doit encore exister a la sortie de la fonction, tu es oblige de l'allouer.
Ensuite, tu as simplement besoin d'un tableau a 3 dimensions. Ici tu en a declare un a six dimensions. Ca fait un peu trop.
Pourquoi 400 ? Ne serait-ce pas plutot h ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 texture = malloc(400 * sizeof(*texture)); if(texture == NULL){ printf("Erreur: Memoire insufisante !"); //exit(1); }
La, non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // On formate le tableau de sortie pour OpenGL for(i=0; i<h; i++) { for(j=0;j<l;j++) { texture[i][j][0] = image[i*h*3+j*3]; texture[i][j][1] = image[i*h*3+j*3+1]; texture[i][j][2] = image[i*h*3+j*3+2]; /*printf("textureR:%d\ntextureG:%d\ntextureB:%d\n",texture[i][j][0],texture[i][j][0],texture[i][j][0]);*/ } } return(texture); }
Tu n'as alloue que la premiere dimension du tableau.
Il faut allouer le reste.
Ca devrait ressembler a ca :
Et surtout on n'oublie pas de tout liberer apres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 for(i=0; i<h; i++) { texture[i] = malloc(l * sizeof(*(texture[i]))); if (texture[i] == NULL) { /* ** Traitement de l'erreur */ } for(j=0;j<l;j++) { texture[i][j] = malloc(3 * sizeof(*(texture[i][j]))); if (texture[i][j] == NULL) { /* ** Traitement de l'erreur */ } texture[i][j][0] = image[i*h*3+j*3]; texture[i][j][1] = image[i*h*3+j*3+1]; texture[i][j][2] = image[i*h*3+j*3+2]; /* printf("textureR:%d\ntextureG:%d\ntextureB:%d\n",texture[i][j][0],texture[i][j][0],texture[i][j][0]); */ } }
Don't worry, be serious.
La vie est courte. Prenez votre temps.
Jack.
Euh, accuse-moi de dipterophilie si tu veux, mais je crois bien que seules deux des trois dimensions sont dynamiques...Envoyé par Emmanuel Delahaye
Ce qui est déjà beaucoup pour un débutant, je te l'accorde.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
alors funraill.net pb résolu ou non ?
il n'y a jamais eu qu'un seul chrétien et il est mort sur la croix Friedrich Nietzsche
L'homme est un apprenti, la douleur est son maitre Alfred de Musset
C'est avoir tort que d'avoir raison trop tôt Praefectus Praetario Hadrianus
my best memories ever : 2008 London Circle Line "The Booze Train"
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager