Saisir un tableau de chaine de caracteres

Fermé
forteco Messages postés 8 Date d'inscription dimanche 9 octobre 2011 Statut Membre Dernière intervention 22 juillet 2012 - 26 févr. 2012 à 11:48
forteco Messages postés 8 Date d'inscription dimanche 9 octobre 2011 Statut Membre Dernière intervention 22 juillet 2012 - 27 févr. 2012 à 11:49
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 :


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:

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...
0
forteco Messages postés 8 Date d'inscription dimanche 9 octobre 2011 Statut Membre Dernière intervention 22 juillet 2012
27 févr. 2012 à 11:49
merci pour votre réponse mais est ce que vous pouvez me proposer un code car je suis débutanat et j'ai essayé avec malloc et ça n'a pas marché :/
0