Je voudrais créer un tableau de 3 joueurs de type Personne (type personnalisé) pour en demander à chacun des infos personnelles (prénom, nom, age, sexe), en utilisant une boucle for (qui se répète tant que le nombre de joueurs est <=3).
J'ai écrit pour cela le code ci-dessous, mais le problème est que l'exécutable saute l'instruction scanf() qui demande au joueur d'indiquer son sexe.
Quelqu'un pourrait m'expliquer pourquoi cette instruction n'est pas exécutée ?
Et merci d'avance.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
typedef struct Personne Personne;
struct Personne
{
char prenom[30];
char nom[30];
int age;
char sexe;
};
Personne joueur[3];
int i;
for(i=0;i<3;i++)
{
i++;
printf("\njoueur n %d \n\n",i);
i--;
printf("Quel est votre prenom? ");
scanf("%s",joueur[i].prenom);
printf("\nQuel est votre nom? ");
scanf("%s",joueur[i].nom);
printf("\nQuel est votre age? ");
scanf("%d",&joueur[i].age);
printf("\nQuel est votre sexe? ");
scanf("%c",&joueur[i].sexe);
printf("\n");
}
return 0;
}
Il se fait qu'après le scanf() de la ligne 27, le \n (la touche sur laquelle tu appuies pour valider ton entrée) n'étant pas un chiffre, il reste dans le buffer du clavier, et ce \n étant acceptable comme caractère pour le scanf() de la ligne 29, ce dernier scanf() a sa réponse.
Pour éviter cela, ajoute ces lignes après ta ligne 27
int c;
while((c=getchar())!='\n' && c!=EOF);
cela permet d'éliminer les caractères non lus du buffer clavier.
Lignes 19 à 21: pas besoin de cette gymnastique avec i, ceci suffit: printf("Joueur %d\n",i+1);
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Tableau de type personnalisé(scanf() non exécutée)
× 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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent