Partage
  • Partager sur Facebook
  • Partager sur Twitter

demandez le nom et le prénom

    27 juillet 2006 à 12:23:10

    :p:D Bonjour a tous voici le petit programme de mateo un peu changé le problème est que si entre un nom en deux partie le programme goire pk?????une aide svp!!!! je vous montre le programme;
                                                                         


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

    struct Personne
    {
        char nom[100];
        char prenom[100];
        char adresse[1000];
       
        long age;
        int garcon; // Booléen : 1 = garçon, 0 = fille
    };
    int main(int argc, char *argv[])
    {
        Personne utilisateur;

        printf("Quel est votre nom ? ", utilisateur.nom);/* si on entre un nom en deux partie boum*/
        scanf("%s", utilisateur.nom);
        printf("Votre prenom ? ",utilisateur.prenom);
        scanf("%s", utilisateur.prenom);

        printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
        system("PAUSE");
        return 0;
    }
    qulequ'un pourrait résoudre cette énigme merci de tout coeur mille merci !!!! et bon code !! :-°^^:D
    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2006 à 12:25:21

      Comme d'habitude scanf... combien de fois on va devoir le répéter ? scanf s'arrete à l'espace ! utilise fgets avec stdin à la place.
      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2006 à 12:26:08

        C"est surment pas ça, mais tu a oublié les & dans

        scanf("%s", <gras>&</gras>utilisateur.nom);

        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2006 à 12:26:11

          printf("Quel est votre nom ? ", utilisateur.nom);

          Que vient faire utilisateur.nom ici ?
          Supprime le ça marchera mieux
          • Partager sur Facebook
          • Partager sur Twitter
            27 juillet 2006 à 12:27:46

            Déjà Vinc' a raison [EDIT : Pareil pou rle prénom] , je n'ai pas regardé le code plus loin que les scanf (à vrai dire j'ai justement cherché les scanf de string... on est tellement habitué à cette question) mais guillaume dit faux. Une string n'a pas besoin de passer son adresse puisque c'est déjà un pointeur.
            • Partager sur Facebook
            • Partager sur Twitter
              27 juillet 2006 à 12:32:36

              :D:euh: j'ai rajouter les é& la ou il en manquait mais je ne sais pas comment utiliser fgets stdin si quelqu'un encore kidpaddle2??????? pourrait me montrer ce serait génial et je lui enverrai un gros bisous bien baveux ( a celui qui trouve la réponse) o_O^^ en tout ces merci et bon code a tous!!!!
              • Partager sur Facebook
              • Partager sur Twitter
                27 juillet 2006 à 12:50:53

                Tu me fais hésiter :p

                Bon pour les '&' je t'ai dit qu'ils n'étaient pas necessaires pour des chaines de caractère.

                Ensuite, fgets s'utilise comme ceci (pour l'entrée clavier) :
                fgets(chaineCiblee,256/*taille du tampon*/, stdin /* flux standard d'entree */);
                chaineCiblee[strlen(chaineCiblee-1)] = '\0'; // Enlève le retour chariot
                • Partager sur Facebook
                • Partager sur Twitter
                  27 juillet 2006 à 12:56:03

                  Citation : Vinc'

                  printf("Quel est votre nom ? ", utilisateur.nom);


                  Que vient faire utilisateur.nom ici ?
                  Supprime le ça marchera mieux


                  et il mets auoi à la place ?

                  Citation : undefined

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

                  struct Personne
                  {
                  char nom[100];
                  char prenom[100];
                  char adresse[1000];

                  long age;
                  int garcon; // Booléen : 1 = garçon, 0 = fille
                  };

                  int main(int argc, char *argv[])
                  {
                  Personne utilisateur;

                  printf("Quel est votre nom ? ", utilisateur.nom);/* si on entre un nom en deux partie boum*/
                  scanf("%s", utilisateur.nom);
                  printf("Votre prenom ? ",utilisateur.prenom);
                  scanf("%s", utilisateur.prenom);

                  printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
                  system("PAUSE");
                  return 0;
                  }



                  il faut déclarer ta variable utilisateur comme ceci :
                  struct Personne utilisateur;

                  ou alors rajouter :
                  typedef struct Personne Personne;

                  avant ton main()
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 juillet 2006 à 13:08:27

                    :D:euh: re bonjour kidpaddle2 avec ton fgets ca ne marche pas ca plante carrément a la compilation alors tu serais si geril de me donner le code qui va avec afin que j'y voie plus clair mille merci (pour ta patience car un zéro comme moi tu n'a pas du en rencontrer souvent mais bon) :-°:D c'est pas faute d'essayer de bien faire .....merci en tout cas de ton aide et que le C soit avec toi ..... ^^:D
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 juillet 2006 à 14:07:07

                      Il ne faut pas copier coller mes codes. Je ne m'occupe que de l'algorythmique principale. Ainsi, je t'ai donné le code pour utiliser fgets avec ton exemple mais SANS SE PREOCUPER DE TA STRUCTURE. Forcément si tu affiche utilisateur.nom alors que tu ne l'as pas rempli, ça a de grandes chances de foirer :p

                      Bon comme je suis gentil je te donne le vrai code à copier coller (si tu le souhaite) et tu me feras le plaisir de poster dans le même topic la prochaine fois. Marre de switcher entre tes topics pour le même problème. (d'ailleurs je mets le même post)

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

                      struct Personne
                      {
                          char nom[100];
                          char prenom[100];
                          char adresse[1000];
                         
                          long age;
                          int garcon; // Booléen : 1 = garçon, 0 = fille
                      };
                      int main(int argc, char *argv[])
                      {
                          struct Personne utilisateur; // C'était valable en C++ mais pas en C
                          /*char saisie[100];
                          char saisie2[100]; maintenant on les enleve*/

                          printf("Quel est votre nom ? ");
                          //fflush (stdout); je ne vois pas en quoi c'est necessaire...
                          fgets(utilisateur.nom, /*sizeof saisie*/ 100, stdin);
                          printf("Votre prenom ? ");
                          //fflush (stdout); idem
                          fgets(utilisateur.prenom, 100, stdin);

                          printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
                          system("PAUSE");
                          return 0;
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 juillet 2006 à 14:17:05

                        :p:o mille merci kidpaddles je t'envoie un gros bisosu bien baveux .....(pas sur que tu l'accepte mais l'intention est là) je ne me doutais que la réponse était simple mais j'ai pas dormis cette nuit alors je ne vois pas très clair mais j'ai quand même envie d'avancer dans le cours encore merci KIdpaddle2 je ne le dirais jamais assez allez sur ce que le C soit avec toi je vois que de toute facon il t'accompagne généreusement et j'avoue t'envier un petit peu tout a l'air si simple pour toi!!! alors que moi je rame dans le vide pour des bêtises enfin c'est le lot de tout débutant !!!!!allez merci une dernière fois et bon code aussi!!!! ^^:-°
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 juillet 2006 à 20:08:30

                          Citation : hermeneute



                              printf("Quel est votre nom ? ", utilisateur.nom);/* si on entre un nom en deux partie boum*/
                              scanf("%s", utilisateur.nom);
                              return 0;
                          }

                          qulequ'un pourrait résoudre cette énigme merci de tout coeur mille merci !!!! et bon code !! :-°^^:D


                          Il ne faut pas utiliser scanf() si on ne sait pas s'en servir (ce qui est très complexe). Mieux vaut une solution simple et claire à base de fgets(), par exemple :

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

                          struct Personne
                          {
                              char nom[100];
                              char prenom[100];
                              char adresse[1000];

                              long age;
                              int garcon; // Booléen : 1 = garçon, 0 = fille
                          };

                          static void purge (FILE * fp)
                          {
                             int c;
                             while ((c = fgetc (fp)) != '\n' && c != EOF)
                             {
                             }
                          }

                          static void clean (char *s, FILE * fp)
                          {
                             /* search ... */
                             char *p = strchr (s, '\n')/* <string.h> */
                             if (p != NULL)
                             {
                                /* ... and kill */
                                *p = 0;
                             }
                             else
                             {
                                purge (fp);
                             }
                          }

                          int main()
                          {
                              struct Personne utilisateur;

                              printf("Quel est votre nom ? ");/* si on entre un nom en deux partie boum*/
                              fflush (stdout);
                              fgets(utilisateur.nom, sizeof utilisateur.nom, stdin);
                              clean (utilisateur.nom, stdin);

                              printf("Votre prenom ? ");
                              fflush (stdout);
                              fgets(utilisateur.prenom, sizeof utilisateur.prenom, stdin);
                              clean(utilisateur.prenom, stdin);

                              printf("Vous vous appelez '%s' '%s'\n", utilisateur.prenom, utilisateur.nom);
                              system("PAUSE");
                              return 0;
                          }

                          Citation : guillaume602


                          C"est surment pas ça, mais tu a oublié les & dans

                          scanf("%s", <gras>&</gras>utilisateur.nom);



                          Quand tu connaitra le C, tu pourras venir ici donner des conseils. En attendant, lit et apprend...

                          Citation : kidpaddle2


                          Ensuite, fgets s'utilise comme ceci (pour l'entrée clavier) :

                          fgets(chaineCiblee,256/*taille du tampon*/, stdin /* flux standard d'entree */);
                          chaineCiblee[strlen(chaineCiblee-1)] = '\0'; // Enlève le retour chariot 

                          Non. Marche pas si il n'y a pas de '\n'.
                          La solution est connue (voir ci-dessus : clean())
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Music only !
                            27 juillet 2006 à 20:16:45

                            Hum... Il ya une solution ici ->ICI<-

                            Qui est sur les memes bases, utilise-les. ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              27 juillet 2006 à 21:01:47

                              OK -ed-. Cela venait de ma mémoire, vu que je n'utilise plus la console. C'est bon à savoir ;)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              demandez le nom et le prénom

                              × 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