Chaîne de caractères en C

Résolu
Bonjour, je commence à coder une nouveau programme, et je me heurte à un problème.

En effet, j'ai ce code
         scanf("%s%s", case1, case2);
         
         printf("\n!!!!!!!!! %s !!!!!!!!!!!", case1);
         printf("\n!!!!!!!!! %s !!!!!!!!!!!", case2);


qui n'enregistre que la chaîne case2. Par contre, si je met

         scanf("%s", case1);
         
         printf("\n!!!!!!!!! %s !!!!!!!!!!!", case1);


Ca me donne la bonne chaîne. Mon code n'enregistre donc que la dernière chaîne ecrite par l'utilisateur. Les variables case1 et case2 sont définies par le type suivant:

typedef char position[2];


Je ne vois pas ce qui peut clocher. Cela fait une heure que je me penche sur le problème.

Merci.

1 réponse

  1. Modérateur
    Quel intérêt d'utiliser un char[2] sachant que si tu veux récupérer une chaîne de caractères le dernier sera un \0, en conséquence tu ne peux mettre qu'un caractère dans une telle chaîne, alors pourquoi ne pas utiliser directement un char avec %c ?
    1
    1. char[2] définit un tableau de caractère à 3 cases (char[0], char[1] et char[2]). Dans le reste du code, l'utilisateur se voit limité à deux caractères.
      0
    2. Hummmm. J'ai remplacé char[2] par char[3] et ca marche. Serait-ce char[3] qui définit un tableau à 3 cases?
      0
    3. Modérateur
      Pour définir un tableau à 3 cases il faut faire char[3].
      0
    4. C'est bien ce que je pensais. Merci pour ton aide :)
      0
    5. Oui car quand tu fait char[3] en faite la variable char[3] n'existe pas, ça fait :
      char[0] char[1] char[2]. Mais tu as bien 3 variables...
      0