Partage
  • Partager sur Facebook
  • Partager sur Twitter

Entrer du texte

Sujet résolu
    22 janvier 2006 à 21:00:55

    En C commen t fait t'on avec le char pour entrer du texte avec un scanf?
    • Partager sur Facebook
    • Partager sur Twitter
    Engineer in Training please wait fr social life ---- Vist www.charybde.be
      22 janvier 2006 à 21:06:31

      ben
      #include <string.h>

      int main()
      {
      char var[50];


      scanf("%s",&var);
      }
      • Partager sur Facebook
      • Partager sur Twitter
        22 janvier 2006 à 21:10:58

        ça pue scanf() pour ça. Utilise gets(nom_de_la_chaine), ou si louisclem passe par là, utilise
        fgets(nom_de_la_chaine, taille_de_la_chaine_, stdin)
        • Partager sur Facebook
        • Partager sur Twitter
          22 janvier 2006 à 21:13:15

          Merci je suis en train de faire une IA et sa va me servir a fond
          Et aussi : comment mettre du texte dans une condition ?
          • Partager sur Facebook
          • Partager sur Twitter
          Engineer in Training please wait fr social life ---- Vist www.charybde.be
            22 janvier 2006 à 21:26:45

            On va rester dans les char parce que les strings j'ai jamais vu l'intérêt à part que ca donne un peu plus de poids au programme:

            char nom[20];
            printf("Hey, comment t'appelles-tu?!\n");
            gets(nom);
            if(strcmp(nom, "Vlad") == 0){
                printf("Oh, Vlad! Quel joli nom!\n");
            }
            else{
                printf("Tu ne t'appelles pas Vlad? Quel boulet!\n");
            }

            la comparaison se joue ici:
            if(strcmp(nom, "Vlad") == 0)
            string compare: si les valeurs comparées par strcmp() sont identiques, elle renvoie 0.

            Tu trouveras aussi la commande strcpy(), qui sert elle non pas à comparer deux string, mais à copier une string dans une autre:

            printf("nous allons maintenant assigner la valeur Vlad à la variable nom:");
            strcpy(nom, "Vlad");
            printf("nom = %s", nom);


            retiens également qu'une valeur propre à une string (oui, des lettres, si tu préfères) se donne entre guillemets anglais " " sinon, ce sera interprété comme un nom de variable.

            Capice? :)
            • Partager sur Facebook
            • Partager sur Twitter
              22 janvier 2006 à 21:27:36

              Citation : gimli

              Merci je suis en train de faire une IA et sa va me servir a fond
              Et aussi : comment mettre du texte dans une condition ?



              Bin soit tu compare toutes les lettres une par une soit tu utilise une fonction deja toute prête que j'ai créé :p :


              /* La fonction prend deux paramètres, deux chaines de caractères, si elles sont idéntiques elle renvoi 1 sinon elle renvoi 0 */

              int compare(char *c1, char *c2)
              {
                  int i = 0, l = strlen(c1);
                  while (l >= i)
                  {
                        if (c1[i] != c2[i]) return 0;
                        i++;
                  }
                  return 1;
              }
              • Partager sur Facebook
              • Partager sur Twitter
                22 janvier 2006 à 21:30:40

                Merci mais je préfère celle de V1944 car je ne comprend pas ta fonction
                • Partager sur Facebook
                • Partager sur Twitter
                Engineer in Training please wait fr social life ---- Vist www.charybde.be
                  22 janvier 2006 à 21:31:51

                  ddx39 > ta fonction est déjà prête, elle s'appelle strcmp() :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    22 janvier 2006 à 21:38:16

                    V1944 > fgets c'est surtout mieux parce que ça vérifie la taille des données lues, et si on décide de faire un truc propre, autant utiliser fgets :D

                    gimli > La fonction strcmp() compare deux chaînes (dans <string.h>), mais je te conseillerais plutôt d'apprendre bien à les utiliser avant de vouloir faire n'importe quoi, ça ne marche aps exactement comme les variables classiques.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 janvier 2006 à 21:40:14

                      Bah merci mais pour l'ionstant sa va je vais aller me coucher et réfléchir a d'autre phrase marrante que Jean(Mon IA) pourrait dire en trout cas il dira de la pub pour ce site
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Engineer in Training please wait fr social life ---- Vist www.charybde.be
                        22 janvier 2006 à 21:45:08

                        Citation : louisclem

                        La fonction strcmp() compare deux chaînes (dans <string.h>), mais je te conseillerais plutôt d'apprendre bien à les utiliser avant de vouloir faire n'importe quoi, ça ne marche aps exactement comme les variables classiques.

                        stdlib ou stdio suffit. Si il fallait inclure string.h, je lui aurait dit:

                        nom = "Vlad";

                        Mais je ne l'ai aps fait pour les raisons énoncées ci-dessus.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 janvier 2006 à 15:24:47

                          strcmp est défini dans string.h et nulle part ailleurs à ce que je sache (enfin, certainement pas dans le reste de la bibliothèque standard C).
                          Tu confonds pas avec la classe string (bibliothèque standard C++) ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 janvier 2006 à 22:19:04

                            Non, j'utilise strcmp() et srtcpy() sans autres libs que stdio.h et stdlib.h
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              23 janvier 2006 à 22:21:32

                              :p des fois les compilateurs linkent tout seul les fonction standards, mais c'est pas bon. strcmp et strcpy sont définis dans <tsing.h> et c'est tout, après c'est ton compilateur qui peut être trop souple, je te conseille quand même d'inclure ce header car si tu compiles sur une autre implémentation ça va peut être pas se passer pareil.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 janvier 2006 à 22:22:57

                                Beuh... et pour vider le buffer d'fgets()?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 janvier 2006 à 23:10:56

                                  memset(buffer, 0, sizeof(buffer));


                                  Citation

                                  ddx39 > ta fonction est déjà prête, elle s'appelle strcmp() :p



                                  Je sais je sais mais rien ne m'empêche de la reproduire :D
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    24 janvier 2006 à 12:36:35

                                    attendez, à la place de
                                    char nom[taille];
                                    gets(nom);
                                    on doit faire
                                    char nom[taille];
                                    fgets(nom, taille_souhaitée, stdin);
                                    memset(nom, 0, sizeof(nom));

                                    ?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 janvier 2006 à 22:55:45

                                      Et pourquoi pas en C++?

                                      #include <iostream>

                                      using namespace std;

                                      int main()
                                      {
                                        char* hello = new char[25];
                                        cin >> hello;
                                        return 0;
                                      }


                                      Ou alors avec la lib String:


                                      #include <string>
                                      #include <iostream>

                                      using namespace std;

                                      int main()
                                      {
                                        string moi("");
                                        cin >> moi;
                                        return 0;
                                      }


                                      Je trouve que les strings sont plus pratiques que les char dans certains points:

                                      - Les espaces sont pris en compte comme une seule et meme chaine
                                      - Il n'y a pas de limite de place dans un string
                                      - Pour comparer fait simplement:

                                      if (machin = truc){} ou if(machin == "morpion"){}

                                      Bonne prog!
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        27 janvier 2006 à 23:12:36

                                        Citation : Uims

                                        Et pourquoi pas en C++?

                                        Citation : gimli

                                        En C commen t fait t'on avec le char pour entrer du texte avec un scanf?

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Entrer du texte

                                        × 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