J'explique mon cas :
Soit ceci :
Code :
- struct etud {
- char *nom;
- int nbCote;
- int *pCote;
- } ;
- typedef struct etud Etud;
- typedef struct etud *p_Etud;
|
J'alloue dynamiquement cette structure :
Code :
- p_Etud ptstruct;
- scanf ("%d",&nb_etud);
- ptstruct = (Etud *) calloc (nb_etud, sizeof (Etud));
|
ensuite :
Code :
- scanf ("%d",ptstruct[i].nbCote);
- ptstruct[i].pCote = (int*) calloc (ptstruct[i].nbCote, sizeof (int));
|
Et lorsque je veux remplir ce tableau avec ça :
Code :
- for (int j=0;j<ptstruct[i].nbCote;j++)
- {
- printf ("Cote %d : ",j+1);
- scanf ("%d",ptstruct[i].pCote[j]);
- printf ("%d\n",ptstruct[i].pCote[j]);
- }
|
Y a un bleme avec l'initialisation
Donc si je veux 5 * pCote, et que je les initialise avec
1,2,3,4,5 ben quand je les imprimerai ça donnera :
1,4,9,13,17 soit
(ptstruct+i)->pCote+sizeof(j));
C'est clair nan ?
Une solution ?
ça doit être une bete erreur mais bon...
Message édité par koude le 21-09-2003 à 17:28:21