Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Problème avec les chaines

    10 février 2006 à 20:05:15

    Bonsoir à tous

    J'ai un petit problème avec les chaines.

    Voici mon programme :

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
      char chaine[100];
      scanf("%s", &chaine);
     
      printf("%s \n", chaine);
     
     
     
      system("PAUSE");     
      return 0;
    }


    Quand je rentre un seul mot (par exemple : 'test'), le programme le recopie sans problème, mais si je rentre une phrase avec des espaces, il ne me recopie que le premier mot :\

    Vous pouvez m'aider en me disant quel est le problème svp ?

    Merci d'avance

    ++
    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2006 à 20:16:34

      un modo qui n'utilise pas la fonction rechercher o_O ? lol je rigole hein( :p ) ba je sais plus mais je me souviens avoir vu un topic qui parlait de ça! ;)
      • Partager sur Facebook
      • Partager sur Twitter
        10 février 2006 à 21:14:30

        C'est le comportement normal de scanf ; utilises fgets.
        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2006 à 21:23:53

          Citation : Elentar

          C'est le comportement normal de scanf ; utilises fgets.



          On vient de me dire sur irc de faire
          scanf("%[^\n]s", &chaine);

          Qu'est-ce que ça change avec fgets ?

          Et comment s'emploie fgets stp ?

          Merci d'avance
          • Partager sur Facebook
          • Partager sur Twitter
            10 février 2006 à 21:34:49

            http://www.faqs.org/faqs/fr/comp/lang/faq-c-2/
            > 8.8 Pourquoi ne doit-on presque jamais utiliser scanf() ?

            fgets(chaine, 100, stdin);
            • Partager sur Facebook
            • Partager sur Twitter
              11 février 2006 à 9:24:46

              Merci Elentar :)

              Par contre, pour les entiers fgets ne marche pas apparement, donc je continue à utiliser scanf, ça ne risque pas de poser de problèmes ?
              • Partager sur Facebook
              • Partager sur Twitter
                11 février 2006 à 10:04:11

                Si : scanf laisse traîner des \n et est vraiment pourri de toute façon. Utilise fgets et strtol/atoi.
                • Partager sur Facebook
                • Partager sur Twitter
                  11 février 2006 à 12:31:18

                  Comme m'avais dit rz0: 'apprends à te servir de fgets()'.
                  Donc voilà...


                  #include <stdlib.h>
                  #include <stdio.h>

                  int main(int argc, char *argv[])
                  {
                    char chaine[100];
                    printf("ta chaine: ");
                    fgets(chaine, 100, stdin);
                    printf("%s \n", chaine);
                   
                   
                   
                    system("PAUSE");     
                    return 0;
                  }



                  Voici un exemple selon le tien ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [C] Problème avec les chaines

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown