There are multiple problems in your code:
fflush(stdin);
is not a proper way to get rid of pending input. It actually has undefined behavior.
%c
in a scanf()
conversion specification expects to read a single character, not a string. If the input for nom
, prenom
and personnage
are single words, you can use %s
instead of %c
. If white space is allowed, use %[^
]
to read characters until the end of line. An initial space in the format string will skip the pending newline and an initial whitespace.
to output a string in printf
, use %s
instead of %c
. The error message is a bit misleading and probably has a star *
at the end: warning: format 'c' expects argument of type 'int', but argument 2 has type 'char *'
Here is a modified version:
#include <stdio.h>
typedef struct Ajouter_un_joueur Joueurdef;
struct Ajouter_un_joueur {
char nom_joueur[30];
char prenom_joueur[20];
unsigned int numero_joueur;
char personnage[50];
};
int main() {
Joueurdef joueur = { 0 };
printf("Choisir le nom de votre joueur
");
scanf(" %29[^
]", joueur.nom_joueur);
printf("Choisir le prenom de votre joueur
");
scanf(" %19[^
]", joueur.prenom_joueur);
printf("Choisir un numero unique pour votre joueur
");
scanf("%u", &joueur.numero_joueur);
printf("Choisir le nom de votre personnage
");
scanf(" %49[^
]", joueur.personnage);
printf("Vous etes %s %s, votre numero est le %u et votre personnage est %s
",
joueur.prenom_joueur, joueur.nom_joueur, joueur.numero_joueur,
joueur.personnage);
return 0;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…