Saisir un tableau de chaine de caracteres
forteco
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
forteco Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
forteco Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais saisir un tableau de chaine de caractères, le problème dans mon code c'est que chaque fois j'ajoute une nouvelle chaine et j'affiche les éléments du tableau, je trouve que les éléments précédents ont été écrasés et remplacés par la nouvelle chaine dans toutes les ligne..
Voici mon code :
Et voici le code de generer_grille(tab,i)
SVP aidez moi à résoudre ce problème et merci .
je voudrais saisir un tableau de chaine de caractères, le problème dans mon code c'est que chaque fois j'ajoute une nouvelle chaine et j'affiche les éléments du tableau, je trouve que les éléments précédents ont été écrasés et remplacés par la nouvelle chaine dans toutes les ligne..
Voici mon code :
do
{
printf("\n donner le mot propose\n\n");
char* mot;
scanf("%s",mot);
verif_mot(mot); //une fonction pour vérifier la validité du mot
tab[i]=mot;
generer_grille(tab,i); //une fonction pour afficher les elements du tableau
i++;
}
while ((i<5) && (mot!=choix));
Et voici le code de generer_grille(tab,i)
void generer_grille( char* tab[9],int k)
{
printf(" .................................");
printf("\n");
for (int j(0);j<=k-1;j++)
{
for (int i(0); i<8 ; i++)
{
printf(" | ");
printf("%c",tab[j][i]);
}
printf(" | ");
printf("\n");
printf(" .................................");
printf("\n");
}
for (int i(k); i<=5 ; i++)
{
for(int j(1); j<=8;j++)
{
printf(" | ");
printf(" ");
}
printf(" | ");
printf("\n");
printf(" .................................");
printf("\n");
}
}
SVP aidez moi à résoudre ce problème et merci .
A voir également:
- Saisir un tableau de chaine de caracteres
- Tableau word - Guide
- Trier un tableau excel - Guide
- Comment saisir une adresse url - Guide
- Caractères spéciaux - Guide
- Imprimer un tableau excel - Guide
2 réponses
Bonjour
Ce qui est étonnant, c'est que ça ne plante pas carrément...
Quand tu fais scanf("%s",mot);, le mot saisi est rangé à l'adresse pointée par 'mot'.
Mais 'mot' pointe sur quoi ? Mystère et boule de gomme, le pointeur est déclaré mais pas initialisé...
Par chance il doit pointer dans une zone pas dangereuse (très étonnant) mais c'est sans doute toujours la même à chaque tour de ta boucle. Donc c'est toujours le même pointeur que tu recopies dans tab[i], il pointe toujours sur le dernier mot entré.
Tu as le choix entre définir un tableau de chaînes (genre char tab[20][9], mais ça limite dès le départ le nombre de mots, ou allouer de la mémoire à chaque fois avec malloc, avec toutes les joyeusetés qui vont avec...
Ce qui est étonnant, c'est que ça ne plante pas carrément...
Quand tu fais scanf("%s",mot);, le mot saisi est rangé à l'adresse pointée par 'mot'.
Mais 'mot' pointe sur quoi ? Mystère et boule de gomme, le pointeur est déclaré mais pas initialisé...
Par chance il doit pointer dans une zone pas dangereuse (très étonnant) mais c'est sans doute toujours la même à chaque tour de ta boucle. Donc c'est toujours le même pointeur que tu recopies dans tab[i], il pointe toujours sur le dernier mot entré.
Tu as le choix entre définir un tableau de chaînes (genre char tab[20][9], mais ça limite dès le départ le nombre de mots, ou allouer de la mémoire à chaque fois avec malloc, avec toutes les joyeusetés qui vont avec...