Langage C probleme gets

Fermé
robin12du84 Messages postés 12 Date d'inscription vendredi 19 juin 2009 Statut Membre Dernière intervention 8 septembre 2013 - 26 avril 2012 à 16:56
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 26 avril 2012 à 23:22
Bonjour,

J'ai un petit problème, avec le code suivant :

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

int main(int argc, char *argv[])
{
Personne TabPers[NOMBRE_PERS];
int pers=0;
while (pers !=NOMBRE_PERS-1)
{
printf("\n\n\n Joueur %d\n\n", pers+1);
printf("Prenom : ");
gets(TabPers[pers].prenom);
printf("Nom : ");
gets(TabPers[pers].nom);
printf("Adresse : ");
gets(TabPers[pers].adresse);
printf("Age : ");
scanf("%d", &TabPers[pers].age);
printf("Sexe (O : Masculin, 1 : Feminin) : ");
scanf("%d", &TabPers[pers].sexe);
printf("Joueur %d, %s a %d ans.", pers+1, TabPers[pers].nom, TabPers[pers].age);
pers++;
}
}

avec le fichier Personne.h suivant :

#define NOMBRE_PERS 4

typedef struct Personne Personne;
struct Personne
{
char nom[100];
char prenom[100];
char adresse[1000];
int age;
int sexe; //0 pour Masculin et 1 pour feminin
};


Mais lorsque je compile j'arrive a saisir parfaitement la premiere personne, mais à partir de la 2eme je ne peux plus saisir le prenom est j'obtiens un truc du genre :

Prenom : Nom : a
Adresse : z
Age : 2
Sexe (O : Masculin, 1 : Feminin) : 0
Joueur 2, a a 2 ans.


Que dois-je faire pour pouvoir éviter ce probleme ?

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
26 avril 2012 à 23:22
Bonjour,

Tu as oublié de vider le buffer clavier.
Pour faire simple, juste avant ton pers++; fais un getchar(); et ton programme devrait mieux marcher.

Sinon pour info, gets() est à bannir, c'est d'ailleurs obsolète. Il vaut mieux utiliser fgets().
0