Problème C tableau de chaînes de caractères

Fermé
florentv - 31 oct. 2009 à 22:52
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 - 1 nov. 2009 à 12:40
Bonjour,

Je dois faire un programme en C et je rencontre un problème avec les tableaux de chaînes de caractères.

Je vous ai collé une partie de mon programme ci-dessous :

_______________________________________________
int nb_equipes, nb_etapes;
char nom_equipe[20];

fscanf(flec, "%d%d", &nb_etapes, &nb_equipes);
char * tab_equipes[nb_equipes];

for (i=0;i<nb_equipes;i++){
fscanf(flet,"%s",nom_equipe);
tab_equipes[i] = nom_equipe;
printf(" equipe %d : %s \n",i,tab_equipes[i]);

}
_______________________________________________

Avec la fonction fscanf je veux copier un nom d'équipe dans la variable nom_equipe (ceci marche très bien).
Ensuite, je veux copier la valeur de cette variable dans le tableau tab_equipes. Le problème est que c'est l'adresse de la variable nom_equipe qui est copiée.

Après être repassé dans la boucle for plusieurs fois, les valeurs contenues dans tab_equipes sont toutes identiques (et égales à la dernière valeur prise par nom_equipe) alors qu'elles devraient être toutes différentes... Ceci est dû au fait que c'est l' adresse de nom_equipe qui a été copiée dans le tableau et pas sa valeur...

Comment je peux contourner ce problème ?

Merci de votre aide.
A voir également:

1 réponse

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
1 nov. 2009 à 12:40
Il suffit d'initialiser au départ ton tableau de pointeurs de chaînes à zéro.
Pour chaque chaîne saisie, il faut lui allouer (malloc) de l'espace mémoire et de ne la désallouer (free) que plus tard (lorsqu'on en a plus besoin).
bonne continuation.
0