Tableau de pointeur de strucure

timy94 Messages postés 50 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 7 janvier 2009 - 24 nov. 2006 à 13:40
timy94 Messages postés 50 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 7 janvier 2009 - 25 nov. 2006 à 20:03
Bonjour

Voila mon problème

struct ess {
   char C1[10];
   char C2  [5];
}
struct ess * Tab[10];

Tab = (struct ess **) malloc (sizeof (struct ess *));
strcpy (Tab[2]->C1,"TITI");  //<<<<  Ici ça plante core à l'execution

Je n'arrive pas à accéder à l'element C1 ni aux autre élement de le structure pointée par Tab[0] POURQUOI?

Je craque

Timy94</gras>

3 réponses

goast_tu Messages postés 212 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 28 mai 2011 2
24 nov. 2006 à 14:03
pourquoi tu declare Tab comme un tableau? ca sert a rien si tu lui alloue un espace par la suite!
en fait qd tu fais
struct ess * Tab[10];
ca reserve un espace memoire et qd tu fais
Tab = (struct ess **) malloc (sizeof (struct ess *));
ca le redefini
Je croix que ca plante a cause de ca.

Mais tu peux ecrire

struct ess * Tab[10];

Tab[2] = (struct ess *) malloc (sizeof (struct ess));
strcpy (Tab[2]->C1,"TITI");

En fait tu t'es planté dans plusieurs endroits avec les pointeurs.
Essai de reviser unpeu ;-)
<hr size="2" width="100%" />Trafic web gratuit!!!
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
24 nov. 2006 à 15:23
Tab = (struct ess **) malloc (sizeof (struct ess *));

Normalement, cette ligne ne devrait pas passer à la compilation.
Tab est un tableau, donc une constante (pas une l-value)

Comme le dit goast_tu, ce sont les éléments de tab qu'il faut allouer, pas Tab lui même, car Tab est allouée statiquement
_____________________________________
Un éditeur de ressources gratuit pour Windows
0
timy94 Messages postés 50 Date d'inscription jeudi 17 novembre 2005 Statut Membre Dernière intervention 7 janvier 2009
25 nov. 2006 à 20:03
Timy94








Je ne sais pas au début du programme combien de structures j’aurai besoin. Le tableau doit être redimensionné en cours de l’évolution du programme. Donc je ne connais au début ni la dimension du tableau ni le nombre de structure à réserver.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>








 








Ensuite je dois trier les structures en réorganisant les adresses contenues dans le tableau de pointeurs.








 








Je pense qu’il faut en cours de programme à la création redimensionner Tab. Et réserver d’autres places mémoires pour les structures.








 








Comment réaliser la redimension de Tab et réserver d’autres structures











 















 
0
Rejoignez-nous