Tableau de pointeurs vers des structures

Kurpeus1 Messages postés 42 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 21 mars 2007 - 28 déc. 2006 à 16:44
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 - 28 déc. 2006 à 17:47
Bonjour et joyeuses fêtes a tous.

Je voudrais créer un tableau de pointeurs vers des structures (de taille identiques) mais je ne sais pas trop comment m'y prendre.

Voici ma structure que je dois créer en 4096 exemplaires :

struct global
{
       char *typeAction;
       char *codebar;
       char *champ1
       char *champ2
       char *champ3
       char *champ4
       char *champ5
};

Comment je dois reserver de la mémoire ? dois je faire un malloc ( je ne sors pas de la fonction qui utilise ce tableau. En fin de calcul toutes les structures seront écrite dans un fichier

Merci

4 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 déc. 2006 à 17:00
il faut un malloc(sizeof(struct global)* 4096);  et apres il faut des mallocs pour chaque element de la structure * 4096
0
Kurpeus1 Messages postés 42 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 21 mars 2007
28 déc. 2006 à 17:12
Donc il faut que je fasse :

struct global
{
       char *typeAction ;
       char *codebar;
       char *champ1
       char *champ2
       char *champ3
       char *champ4
       char *champ5
};

struct global * tab[ ] = malloc(sizeof(struct global)* 4096);

for ( i = 0; i<4096; i++)
{
    (tab[i])->typeAction = malloc(sizeof(typeAction)*16;
    (tab[i])->codebar = malloc(sizeof(typeAction)*80;
    (tab[i])->champ1 = malloc(sizeof(typeAction)*80
    (tab[i])->champ2 = malloc(sizeof(typeAction)*8;
    (tab[i])->champ3 = malloc(sizeof(typeAction)*8;
    (tab[i])->champ4 = malloc(sizeof(typeAction)*8;
    (tab[i])->champ5 = malloc(sizeof(typeAction)*8;
}

?
0
Kurpeus1 Messages postés 42 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 21 mars 2007
28 déc. 2006 à 17:16
hmm erreur de copier coller ->  sizeof(du truc correspondant) ^^
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
28 déc. 2006 à 17:47
Oui c'est comme ca qu'il faut procèdeer je pense
sauf la ligne struct global * tab[ ] = malloc(sizeof(struct global)* 4096);
que je remplacerai struct global * tab[ ] = malloc(sizeof(struct global *)* 4096);
car c'est un tableau de pointeurs
++
0
Rejoignez-nous