Partage
  • Partager sur Facebook
  • Partager sur Twitter

AIDEZ MOI : CREER UN TABLEAU DE TYPE PERSONNE

Mon code bug

    11 mai 2019 à 15:28:42

    onjour à tous, je suis le cours de langage C de M@teo21, et je suis arrivé à cet exercice :

    Exercice : créez ce tableau de type Personne et demandez les infos de chacun grâce à une boucle (qui se répète tant qu'il y a

    des joueurs). Faites un petit tableau de 2 joueurs pour commencer, mais si ça vous amuse, vous pourrez agrandir la taille du

    tableau plus tard.

    Affichez à la fin du programme les infos que vous avez recueillies sur chacun des joueurs.

    voici mon travail

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include "main.h"
    
    int main(int argc, char const *argv[])
    {
        int i;
        int nombreDeJoueurs = 2;
        Personnes joueurs[nombreDeJoueurs];
    
        //Enregistrement des infos des 2 joueurs
    
        for ( i = 0; i < nombreDeJoueurs; i++)
        {
        printf("Bonjour joueur :%d\n", i+1);
        printf("********************************\n");
            printf("Entrez votre nom :");
            fgets(joueurs[i].nom, 100, stdin);
    
            printf("Entrez votre prenom :");
            fgets(joueurs[i].prenoms, 100, stdin);
    
            printf("Entrez votre sexe (M pour homme, F pour femme) :");
            fgets(joueurs[i].sexe, 2, stdin);
    
            printf("Entrez votre age :");
            scanf("%d", &joueurs[i].age);
            system("cls");
    
        }  
    
        //  Affichage des infos des 2 joueurs enregistrés
    
        for ( i = 0; i < nombreDeJoueurs; i++)
        {
            printf("Joueurs : %d\nNom : %s\nPrenom : %s\nSexe : %s\nAge : %d\n", i+1,joueurs[i].nom,joueurs[i].prenoms,joueurs[i].sexe,joueurs[i].age );
        }
        
        return 0;
    }



    Plus le header 

    #ifndef __PERSONNE__
    #define __PERSONNE__
    typedef struct Personnes Personnes;
    struct Personnes
    {
    char nom[100];
    char prenoms[100];
    char sexe[2];
    int age;
    };
    #endif

    Mon code marche (Signaler moi s'il y a des erreur merci) mais sur ma console impossible de saisir le nom du joueur 2 (REGARDEZ LA FIN DU CONSOLE)

    -
    Edité par FabriceDev 11 mai 2019 à 15:39:10

    • Partager sur Facebook
    • Partager sur Twitter
    Bonjour!!!
      11 mai 2019 à 19:00:14

      Salut,

      Il te faut vider le buffer. Je te laisse te renseigner à ce sujet.

      • Partager sur Facebook
      • Partager sur Twitter
      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
        11 mai 2019 à 22:48:06

        Dans mes recherches sur comment vider le buffer j'ai trouvé ça

        #include <stdio.h> 
          
        void clean_stdin(void) 
        { 
            int c; 
          
            do { 
                c = getchar(); 
            } while (c != '\n' && c != EOF); 
        }


        Je l'ai collé au mon programme rien ne marche 🙄
        • Partager sur Facebook
        • Partager sur Twitter
        Bonjour!!!
          11 mai 2019 à 23:04:02

          Bonjour,

          c'est bien la bonne fonction. Est-ce que tu l'appelle du bon endroit?
          Attention à la fonction fgets(), elle lit jusqu'au terminateur de ligne inclut. Donc pour lire une seule lettre (comme M ou F), il faut au moins recevoir 3 caractères : La lettre ('M' ou 'F'), le retour chariot ('\n') et le terminateur de chaîne ('\0'). 

          • Partager sur Facebook
          • Partager sur Twitter

          En recherche d'emploi.

          AIDEZ MOI : CREER UN TABLEAU DE TYPE PERSONNE

          × 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