Addition de sizeof (i) au lieu de i

Addition de sizeof (i) au lieu de i - C - Programmation

Marsh Posté le 21-09-2003 à 16:51:11    

J'explique mon cas :
Soit ceci :
 

Code :
  1. struct etud {
  2. char *nom;
  3. int nbCote;
  4. int *pCote;
  5. } ;
  6. typedef struct etud Etud;
  7. typedef struct etud *p_Etud;


 
J'alloue dynamiquement cette structure :
 

Code :
  1. p_Etud ptstruct;
  2. scanf ("%d",&nb_etud);
  3. ptstruct = (Etud *) calloc (nb_etud, sizeof (Etud));


 
ensuite :
 

Code :
  1. scanf ("%d",ptstruct[i].nbCote);
  2. ptstruct[i].pCote = (int*) calloc (ptstruct[i].nbCote, sizeof (int));


 
Et lorsque je veux remplir ce tableau avec ça :
 

Code :
  1. for (int j=0;j<ptstruct[i].nbCote;j++)
  2.  {
  3.   printf ("Cote %d : ",j+1);
  4.   scanf ("%d",ptstruct[i].pCote[j]);
  5.   printf ("%d\n",ptstruct[i].pCote[j]);
  6.  }


 
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  ? :lol:  
Une solution ?
ça doit être une bete erreur mais bon...


Message édité par koude le 21-09-2003 à 17:28:21
Reply

Marsh Posté le 21-09-2003 à 16:51:11   

Reply

Marsh Posté le 21-09-2003 à 17:01:57    

dis ton code, je pense meme pas qu'il soit valable
 
ptstruct = calloc (nb_etud, sizeof(Etud));
ptstruct[i].pCote = calloc (ptstruct[i].nbCote, sizeof (int));
 
quand au reste, j'y comprends rien

Reply

Marsh Posté le 21-09-2003 à 17:02:20    

&(ptstruct+i)
 
ça me semble dangereux ça
c'est pas plutôt ptstruct[i] la manière propre de le faire ?
 
edit: [:benou_grilled]


Message édité par antp le 21-09-2003 à 17:03:02

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-09-2003 à 17:03:17    

antp a écrit :

&(ptstruct+i)
 
ça me semble dangereux ça
c'est pas plutôt ptstruct[i] la manière propre de le faire ?

il est complètement pommé entre pointeurs, *, &, ->, [] ...

Reply

Marsh Posté le 21-09-2003 à 17:04:48    

pommé ? il a mangé trop de pommes ? [:ddr555]
(c'est plutôt paumé, non ? :??:)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-09-2003 à 17:05:14    

Taz a écrit :

il est complètement pommé entre pointeurs, *, &, ->, [] ...


 
Un rien en effet

Reply

Marsh Posté le 21-09-2003 à 17:06:44    

antp a écrit :

pommé ? il a mangé trop de pommes ? [:ddr555]
(c'est plutôt paumé, non ? :??:)

peut être qu'il a un mac    [:spamafote]

Reply

Marsh Posté le 21-09-2003 à 17:16:14    

et comme ça ça a l'air correcte nan?

Reply

Marsh Posté le 21-09-2003 à 17:29:05    

Ça marche pas mieux ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-09-2003 à 17:30:39    

si, ça marche mais c pas pour autant que c'est correct ^^

Reply

Marsh Posté le 21-09-2003 à 17:30:39   

Reply

Marsh Posté le 21-09-2003 à 17:36:37    

D'où le "mieux" dans ma phrase :o
 
scanf ("%d",ptstruct[i].pCote[j]);  
 
->
 
scanf ("%d",&(ptstruct[i].pCote[j]));


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-09-2003 à 17:37:12    

bizarre a lecole en 1ere ils ont exactement le meme enonce pour linstant
 
:whistle:


Message édité par red faction le 21-09-2003 à 17:37:35
Reply

Marsh Posté le 21-09-2003 à 17:38:31    

Il en veut pas :
error C2102: '&' requires l-value

Reply

Marsh Posté le 21-09-2003 à 17:39:10    

red faction a écrit :

bizarre a lecole en 1ere ils ont exactement le meme enonce pour linstant
 
:whistle:


Ou donc?

Reply

Marsh Posté le 21-09-2003 à 17:40:50    

Koude a écrit :

Il en veut pas :
error C2102: '&' requires l-value


 
ha, bizarre, il me semblait que ça marchait.
Je fais rarement du C/C++, et en plus quand j'en fais je le fais mal :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-09-2003 à 17:42:18    

antp a écrit :


 
ha, bizarre, il me semblait que ça marchait.
Je fais rarement du C/C++, et en plus quand j'en fais je le fais mal :D


 
Et c'est maintenant que tu le dis  :kaola:  ^^
Merci qd même, de toute façon la ça a l'air de fonctionner

Reply

Marsh Posté le 21-09-2003 à 17:42:20    


Hers

Reply

Marsh Posté le 21-09-2003 à 17:43:18    


 
Et t'es en train de me dire qu'en premiere ils font deja de l'alloc dynamique de struct ?

Reply

Marsh Posté le 21-09-2003 à 17:44:40    

:o


Message édité par red faction le 21-09-2003 à 17:51:10
Reply

Marsh Posté le 21-09-2003 à 17:45:23    

T'es sur que c'est pas en deuxieme ?
Au fait, c koi ton ptit nom propre ?

Reply

Marsh Posté le 21-09-2003 à 17:46:26    

je suis en mission inconnue puis jparle pas au fossilles non plus :o

Reply

Marsh Posté le 21-09-2003 à 17:48:06    

red faction a écrit :

je suis en mission inconnue puis jparle pas au fossilles non plus :o


 
alors ça c petit !

Reply

Marsh Posté le 21-09-2003 à 17:48:10    

bon ouais c ptet en 2e jsais plus mais tjs qd 1e y font pratiquement tout en C

Reply

Marsh Posté le 25-09-2003 à 15:51:29    

scanf ("%d",ptstruct[i].nbCote);
et ça aussi ça marche?
 
T'utilise 3 fois scanf et 2 fois tu te plantes!
Passes par une variable intermédiaire, c'est plus sûr.
 

Code :
  1. int saisie;
  2. scanf ("%d",&saisie);
  3. ptstruct[i].nbCote = saisie;


puis après:

Code :
  1. for (int j=0;j<ptstruct[i].nbCote;j++)
  2. {   
  3. printf ("Cote %d : ",j+1);
  4. scanf ("%d",&saisie);
  5. ptstruct[i].pCote[j] = saisie;
  6. printf ("%d\n",ptstruct[i].pCote[j]);
  7. }

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed