impossible de rejouer....probleme de scanf :( - C - Programmation
Marsh Posté le 31-12-2008 à 11:17:45
Problème bien connu me semble-t-il en C.
Une recherche aurait donné de bonnes réponses...
M'enfin, puisque je suis en plein dans le C, je me lance sur quelques explications.
Ton problème vient du fait que l'entrée standard n'est pas purgée aprés un premier appel à scanf().
Classiquement on utilise ce genre de fonction pour purger stdin :
Code :
|
Donc ton code deviendrait :
Code :
|
Mais comme l'a très justement précisé Joel F il est préférable d'utiliser fgets sur stdin.
Exemple trouvé en deux secondes : http://www.siteduzero.com/tutoriel [...] fgets.html
Marsh Posté le 31-12-2008 à 00:19:59
Bonjour,
j'ai fait un petit jeu en C et je suis face a un probleme que je n'arrive pas a résoudre!!!
Voila lorsque la partie se termine je propose de rejouer mais le scanf correspondant à la saisie de la réponse ne fonctionne pas.
voici une partie du code:
main()
{
char plateau[10][10];
char joueur1[15];
char joueur2[15];
int joueur;
int p;
int i;
int numcolonne;
int numligne;
int victoire;
int nbjeu;
char rejoue;
joueur=1;
printf("\nBienvenue dans Neomix!!!\n" );
rejoue='o';
while(rejoue=='o')
{
printf("\nentrez le nom du joueur 1:" );
scanf("%s",joueur1);
printf("entrez le nom du joueur 2:" );
scanf("%s",joueur2);
printf("%s joue avec les O et %s joue avec les X\n",joueur1, joueur2);
initialisation(plateau);
affichage(plateau);
victoire=0;
nbjeu=0;
while(victoire!=1 && nbjeu<60)
{
oujouer(&numligne,&numcolonne, joueur, joueur1, joueur2);
jouer(plateau,&p,numligne,numcolonne,&joueur);
resultatjouer(&p, &numligne, &numcolonne, plateau, &joueur, joueur1,joueur2);
affichage(plateau);
victoire=gagner(numligne,numcolonne, plateau);
nbjeu=nbjeu+1;
}
if(victoire==1)
{
if(joueur==2)
printf("%s est vainqueur\n",joueur1);
else
printf("%s est vainqueur\n",joueur2);
}
if(nbjeu==60)
printf("match nul\n" );
printf("Voulez vous une nouvelle partie?(o/n)\n" );
scanf("%c",&rejoue);
}
}
Merci d'avance de votre aide