Allocation d'un tableau dynamique à 2D et remplissage

Signaler
Messages postés
10
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
21 novembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Bonjour,

J'ai des petits soucis pour allouer mon tableau à 2D et surtout pour insérer des valeurs aléatoires dans celui-ci.
Voici j'ai fait :

#include <stdio.h>
#include <time.h>
#include <malloc.h>

void main(void)
{
//je defini une structure pour mon tableau prec
typedef struct _AFTER_ {
int I; int J;
} I_after_J, * I_after_JPtr;

int nbvars = 10;

//declaration et allocation de mon tableau
I_after_J prec = malloc(nbvars*sizeof(struct _AFTER_));

//definition la taille de mon tab pour pvoir boucler
int ctrs = sizeof(prec)/sizeof(I_after_J);

for (int j=0;j<ctrs;j++)
{
prec[j].I=(rand()%nbvars+1);
prec[j].J=(rand()%nbvars+1);
printf("precedence : %d\n", prec[j].I);
printf("precedence : %d\n", prec[j].J);
}
free(prec);
}

Erreurs affichées à la compile :

"precedence.cpp", au niveau de la declaration du tableau prec: Error: Cannot use void* to initialize _AFTER_.

Erreur au niveau de l'affectation des valeurs dans prec :
"precedence.cpp", line 60: Error: The operation "_AFTER_[int]" is illegal.
"precedence.cpp", line 61: Error: The operation "_AFTER_[int]" is illegal.
"precedence.cpp", line 62: Error: The operation "_AFTER_[int]" is illegal.
"precedence.cpp", line 63: Error: The operation "_AFTER_[int]" is illegal.
"precedence.cpp", line 66: Error: Cannot cast from _AFTER_ to void*.

Voilà mes problemes, si quelqu'un voit mon erreur ou possède une solution, faites moi signe, svp.

Merci

Ibti

1 réponse

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
fait plutot
I_after_JPtr prec = (I_after_J *)malloc(nbvars*sizeof(struct _AFTER_));

car I_after_JPtr est un pointeur ( pas I_after_J ) et sans oublier le cast pour le pointeur retourne

sinon on ecrit sizeof prec et pas sizeof(prec) car c'est un operateur, pare contre pour un type faut bien ecrire
sizeof(I_after_J)