Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher une phrase tapée par l'utilisateur

    23 juin 2017 à 21:13:13

    Bonjour chers,

    ça fait une petite demi-heure que je n'arrive pas avancer sur cet exercice où on demande de recueillir des informations sur des joueurs et de les afficher à la fin. Voilà, mon problème est que j'ai du mal à afficher l'adresse du joueur sous forme d'une phrase genre "5 rue machin". Outre mon programme se plante à partir de la ligne 31 et je n'arrive à saisir l'origine de ce plantage.

    SVP aidez-moi! Merci d'avance!

    Mon code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct Personne Personne;
    struct Personne
    {
        char nom[100];
        char prenom[100];
        char adresse[100];
        long codePostal;
        char numeroTelephone[100];
    };
    
    int main()
    {
        Personne joueurs[2]={" ", " ", 0, " "};
        int i=0;
        for(i=0; i<2; i++)
        {
          printf("Joueur%d quel est votre nom? ",i+1);
          scanf("%s", joueurs[i].nom);
          printf("\n");
          printf("Joueur%d quel est votre prenom? ",i+1);
          scanf("%s", joueurs[i].prenom);
          printf("\n");
          printf("Joueur%d quel est votre adresse? ",i+1);
          scanf("%s", joueurs[i].adresse);
          printf("\n");
          printf("Joueur%d quel est votre code postal? ",i+1);
          scanf("%ld", joueurs[i].codePostal);
          printf("\n");
          printf("Joueur%d quel est votre numero de telephone? ",i+1);
          scanf("%s", joueurs[i].numeroTelephone);
          printf("\n");
    
        }
        for(i=0; i<2; i++)
        {
            printf("=== Informations personnelles sur Joueur%d ===",i+1);
            printf("Nom: %s\n", joueurs[i].nom);
            printf("Prenom: %s\n", joueurs[i].prenom);
            printf("Adresse: %s\n", joueurs[i].adresse);
            printf("Code Postal: %ld\n", joueurs[i].codePostal);
            printf("Numero de telephone: %s\n", joueurs[i].numeroTelephone);
        }
    
        return 0;
    }
    



    -
    Edité par Sanoudaniel 23 juin 2017 à 21:15:33

    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2017 à 21:23:55

      Pour les chaines comportant des caractères séparateurs comme l'espace, utilise fgets à la place de scanf
      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2017 à 21:57:42

        Ligne 31 : scanf attend une adresse pour son 2ème argument
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 juin 2017 à 11:22:29

          Pourquoi spécifiquement un type long pour le code postal ?
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2017 à 11:33:38

            oldProgrammer a écrit:

            Pourquoi spécifiquement un type long pour le code postal ?

            Pourquoi pas? En tout cas int n'est garanti que pour les nombres de -32768 à +32767 en standard, même si très souvent il peut mieux. Mais en effet, le type uint32_t ou même une chaîne serait peut-être plus approprié.

            • Partager sur Facebook
            • Partager sur Twitter

            En recherche d'emploi.

            Anonyme
              24 juin 2017 à 11:46:19

              Dalfab a écrit:

              oldProgrammer a écrit:

              Pourquoi spécifiquement un type long pour le code postal ?

              Pourquoi pas? En tout cas int n'est garanti que pour les nombres de -32768 à +32767 en standard, même si très souvent il peut mieux. Mais en effet, le type uint32_t ou même une chaîne serait peut-être plus approprié.

              La question était dans le sens "que compte-t-il en faire ?" Si c'est pour de l'affichage par la suite, autant garder en tableau de chars, et je ne vois pas quel calcul faire sur des codes postaux...

              • Partager sur Facebook
              • Partager sur Twitter
                24 juin 2017 à 12:27:32

                oldProgrammer a écrit:

                La question était dans le sens "que compte-t-il en faire ?"

                Rien, (ou peut-être faire un exercice sur les long) mais ça n'a pas été inutile, puisque c'est là qu'il a fait l'erreur. 

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  24 juin 2017 à 13:02:05

                  rouloude a écrit:

                  oldProgrammer a écrit:

                  La question était dans le sens "que compte-t-il en faire ?"

                  Rien, (ou peut-être faire un exercice sur les long) mais ça n'a pas été inutile, puisque c'est là qu'il a fait l'erreur. 

                  Si, auquel cas, quel intérêt de récupérer cette information ? Si on a un problème donné, c'est pour le résoudre... Si on ajoute des données que l'on utilise pas par la suite, on complique sa résolution. Ce genre de donnée serait intéressante pour rechercher les villes associées à ce code postal afin de sélectionner sa ville dans une base de données.

                  Le PO semble partir d'un problème concret, il est de bon ton de respecter ses consignes. Peut-être que le PO sera capable de répondre au pourquoi de l'utilisation de ce type de donnée.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 juin 2017 à 20:10:34

                    salut essaye ce code en declarant code postal de type char et joueur de simple 

                    #include <stdio.h>
                    
                    #include <stdlib.h>
                    
                    #include <string.h>
                    
                    typedef struct Personne Personne;
                    
                    struct Personne
                    
                    {
                    
                        char nom[100];
                    
                        char prenom[100];
                    
                        char adresse[100];
                    
                        char codePostal[100];
                    
                        char numeroTelephone[100];
                    
                    };
                    
                    int main()
                    
                    {
                    
                        Personne joueurs;
                    
                        int i;
                    
                        for(i=0; i<2; i++)
                    
                        {
                    
                          printf("Joueur%d quel est votre nom? ",i+1);
                    
                          scanf("%s", joueurs.nom);
                    
                          printf("\n");
                    
                          printf("Joueur%d quel est votre prenom? ",i+1);
                    
                          scanf("%s", joueurs.prenom);
                    
                          printf("\n");
                    
                          printf("Joueur%d quel est votre adresse? ",i+1);
                    
                          scanf("%s", joueurs.adresse);
                    
                          printf("\n");
                    
                          printf("Joueur%d quel est votre code postal? ",i+1);
                    
                          scanf("%s", joueurs.codePostal);
                    
                          printf("\n");
                    
                          printf("Joueur%d quel est votre numero de telephone? ",i+1);
                    
                          scanf("%s", joueurs.numeroTelephone);
                    
                          printf("\n");
                    
                        }
                    
                        for(i=0; i<2; i++)
                    
                        {
                    
                            printf("=== Informations personnelles sur Joueur%d ===\n",i+1);
                    
                            printf("Nom: %s\n", joueurs.nom);
                    
                            printf("Prenom: %s\n", joueurs.prenom);
                    
                            printf("Adresse: %s\n", joueurs.adresse);
                    
                            printf("Code Postal: %s\n", joueurs.codePostal);
                    
                            printf("Numero de telephone: %s\n", joueurs.numeroTelephone);
                    
                        }
                    
                        return 0;
                    
                    }



                    -
                    Edité par Lauloque 25 juin 2017 à 21:37:53

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 juin 2017 à 21:20:10

                      @YoussouphaLi: à quoi servent les for dans le code que tu montres ? Et, franchement, tu connais beaucoup de codes postaux ou de numéros de téléphone (et de noms et prénoms, tant que j'y suis - adresses, à la limite) qui ont besoin de 99 caractères pour être stockés ?

                      Et pour poster du code: bouton </> et choisir c++ comme langage.

                      -
                      Edité par edgarjacobs 24 juin 2017 à 21:22:51

                      • Partager sur Facebook
                      • Partager sur Twitter

                      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                        25 juin 2017 à 21:37:08

                        Bonjour YoussouphaLy.

                        Extrait des Règles générales des Forums :

                        Si vous présentez du code dans votre message, il est obligatoire d'utiliser la mise en forme spécifique, afin de permettre à vos lecteurs de facilement le comprendre, et ainsi vous aider plus facilement.

                        Je fais la modification pour cette-fois, merci d'y penser à l'avenir.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script

                        Anonyme
                          25 juin 2017 à 22:13:19

                          YoussouphaLy   est-ce que chez toi les adresses n'ont pas de caractères d'espacement ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 juillet 2017 à 20:07:36

                            Merci à vous tous! J'ai pu réussir finalement en utilisant "fgets" que je ne connaissais pas encore.

                            -
                            Edité par Sanoudaniel 3 juillet 2017 à 20:08:47

                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 juillet 2017 à 20:45:55

                              Sanoudaniel a écrit:

                              Bonjour chers,

                              ça fait une petite demi-heure que je n'arrive pas avancer sur cet exercice où on demande de recueillir des informations sur des joueurs et de les afficher à la fin.

                              petite astuce pour saisir un string :

                              #include <stdio.h>
                              #include <stdlib.h>
                              
                              
                              
                              int main()
                              {
                              
                              char tab[81] = {0};
                              char c;
                              
                              if (scanf("%80[^\n]", tab) != 1)
                              	return EXIT_FAILURE;
                              printf("vous avez entre : %s",tab);
                              
                              return 0;
                              }


                              -
                              Edité par Alex Le Zero 3 juillet 2017 à 20:46:49

                              • Partager sur Facebook
                              • Partager sur Twitter

                              Afficher une phrase tapée par l'utilisateur

                              × 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