Partage
  • Partager sur Facebook
  • Partager sur Twitter

Entrer plusieurs mots dans un char via scanf

Comment?

    28 décembre 2005 à 22:50:09

    Bonjour

    J'aimerais bien si quelqu'un pouvais me dire comment mettre tout ce que l'utilisateur écrit lors d'un scanf dans un char. J'ai essayé avec
    scanf("%s", &texte);

    mais si j'entre plus d'un mot ça plante... En fait ça saute tout simplement le printf et l'autre scanf qui suivent et passe directement à une autre étape du programme. Comment stocker plus d'un mot dans un char?

    Merci d'avance pour votre aide!
    • Partager sur Facebook
    • Partager sur Twitter
      29 décembre 2005 à 0:07:13

      essaye une fonction getc() ou getch() ou getchar() (me rappelle pas son nom, ni dans quel librairie on la trouve).

      elle recupere la valeur de la touche appuyée
      il faut l'utiliser dans un while

      int compteur=0;
      int phrase[100];
      while(compteur<100||caractere!=caractere_pour_arreter)
      {
      phrase[compteur]=getc...();
      compteur++;
      }
      phrase[compteur]=0; //pour dire que la phrase est finie


      je ne sais pas si c'est exact, mais c'est comme ca que j'essayerai.

      sinon, attend les chapitres 4 et/ou 5 de la partie 2 du cours sur le C : http://www.siteduzero.com/forum-83-9569-78485.html#r78485
      • Partager sur Facebook
      • Partager sur Twitter
        29 décembre 2005 à 0:17:31

        essaie aussi

        scanf("%s@\n", var);
        • Partager sur Facebook
        • Partager sur Twitter
          29 décembre 2005 à 10:33:19

          Ou encore :

          #include <stdio.h>

          int main(void)
          {
              char string[200];

              printf("Entrez votre chaine de caractères puis appuyez sur entree :\n");
             
              gets(string);
             
              printf("La chaine entree est : \n%s\n", string);
              getchar();

              return 0;
          }


          Plus simple me semble-t-il:p
          • Partager sur Facebook
          • Partager sur Twitter
            29 décembre 2005 à 16:52:37

            Merci beaucoup pour votre aide. J'ai essayé avec
            #include <stdio.h>

            int main(void)
            {
                char string[200];

                printf("Entrez votre chaine de caractères puis appuyez sur entree :\n");
               
                gets(string);
               
                printf("La chaine entree est : \n%s\n", string);
                getchar();

                return 0;
            }

            Et ça marche à perfection! Merci encore!
            • Partager sur Facebook
            • Partager sur Twitter
              30 décembre 2005 à 21:57:31

              Bonjour cela marche, mais j'ai besoin de quelques explications:

              Pourquoi:
              string[200];


              Vous pouvez m'expliquer?

              Et comment faire un switch avec ce-ci?
              Par exemple on tape maman gateau on va sur la case maman gateau ou alors on tape papa bonbon et sa va sur papa bonbon?

              Excusez moi pour les exmples mais ce sont les seuls qui me sont venu à l'idée ;)
              • Partager sur Facebook
              • Partager sur Twitter
                30 décembre 2005 à 22:01:14

                Parce que les strings n'existent pas en C (ils sont apparus en C++) il faut donc déclarer un Tableau de caractéres :


                Tableau[MAX_ELEMENT];


                sinon il est posible faire un :


                char* string;


                ? non
                • Partager sur Facebook
                • Partager sur Twitter
                  30 décembre 2005 à 22:10:36

                  Ok merci pour l'info. Sa ressemble à l'array en php?

                  Sinon comment faire un switch avec une chaine de caractére?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    31 décembre 2005 à 10:27:15

                    Ah ^^ En php on peux! hihi.

                    Sinon je dois me resigné à attribuer un valeur avant, comment faire pour que sa marche:
                    if(SteamID == 0-1-256633) value = 1;

                    Voila, la chaine entrée sera toujours sous ce type de caractéres puisque c'est un id.

                    J'ai essayé avec la syntaxe php (oui je conné beaucoup le php mais peux le C, a vrai dire je viens sur ce site depuis que les cours en C existe :D)mais sa marche pas. (Syntaxe php: if($SteamID == "0-1-256633") $value = 1; // Donc g essayé: if(SteamID == "0-1-256633") value = 1; Mais bon probléme :D!

                    Je m'en serais à peine douté! :-°
                    • Partager sur Facebook
                    • Partager sur Twitter
                      31 décembre 2005 à 10:37:41

                      Citation : Thema

                      Bonjour cela marche, mais j'ai besoin de quelques explications:

                      Pourquoi:

                      string[200];



                      Vous pouvez m'expliquer?

                      Et comment faire un switch avec ce-ci?
                      Par exemple on tape maman gateau on va sur la case maman gateau ou alors on tape papa bonbon et sa va sur papa bonbon?

                      Excusez moi pour les exmples mais ce sont les seuls qui me sont venu à l'idée ;)



                      Ton string[200], ou si tu préfère ton
                      Tableau_stockant_une_chaine_de_caractère_de_taille_TAILLE_MAX_-_1[TAILLE_MAX];

                      ne stockera qu'une seule phrase, si tu veux en stocker plusieurs, il te audra utiliser un tableau à 2 dimensions cad:

                      string[NB_CARA_MAX][NB_PHRASES];

                      NB_CARA_MAX étant le nombre de caractère de la phrase (chaine) la plus longue + 1 (une chaine se terminant tjs par un caractère nul).

                      A partir de la tu peux utiliser ton switch du genre :
                      switch(choix)
                      {
                      case 1:
                      printf("%s", string[][0]);
                      break;
                      etc.
                      }

                      où string[][0] contiendra par exemple "maman gâteau" :p
                      • Partager sur Facebook
                      • Partager sur Twitter
                        31 décembre 2005 à 10:48:30

                        Pour tester une chaîne (comme la steamID plus haut), tu dois utilisez strcmp() qui prend en charge 2 paramètre : 2 chaîne de caractère (enfin 2 pointeur sur caractère).
                        Tu peux donc faire sa :
                        strcmp(SteamID,"0-1-256633")

                        strcmp renvoie 0 quand les deux chaîne sont pareil
                        • Partager sur Facebook
                        • Partager sur Twitter
                          31 décembre 2005 à 11:11:00

                          http://siteduzero.com/forum-83-9294-faq-c.html#r76485

                          faites l'effort de lire la FAQ avant de poser ce genre de questions.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            31 décembre 2005 à 11:53:38

                            Sorry mais au départ je suis venu pour quelque chose puis après une autre question est venue et ainsi de suite... De plus la FAQ est légerement grosse et mal organisée... Donc il n'est pas rara de sauté un post sans y préter attention!
                            • Partager sur Facebook
                            • Partager sur Twitter
                              31 décembre 2005 à 12:10:01

                              bah en même temps ya que 21 questions, donc bon..

                              Cependant, je vais essayer de faire un petit effort d'organisation, tu n'as pas tort.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                31 décembre 2005 à 12:39:23

                                Plutôt que gets(), utilisez fgets (pas de dépassement).
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Entrer plusieurs mots dans un char via scanf

                                × 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