Redondance d'un printf (débutant) - C - Programmation
Marsh Posté le 19-12-2011 à 16:27:01
Hmm, je dirais plutôt que c'est la manière de rentrer ton caractère au clavier qui fait qu'il y a deux fois le message. La saisie doit être configuré en mode ligne, donc pour valider ton entrée, tu dois saisir un caratère, puis appuyer sur la touche "entrée". Bah voilà, pour getchar(), ça fait deux caractères.
Solution facile : tu filtres les '\r' ou '\n'
Solution plusse mieux : tu bascules la saisie en mode caractère (c'est faisable en quelques lignes de code, mais je n'ai plus ça sous la main, et flemme de faire la recherche. C'est lié à la gestion des terminaux posix, ce n'est pas dans la libc).
Marsh Posté le 19-12-2011 à 16:35:40
A vrai dire, je n'ai pas encore regarder fflush ni newline, mais j'utilise une procédure pour vider le buffer telle que celle-ci
Code :
|
Marsh Posté le 19-12-2011 à 22:26:13
Oui, c'est ce qu'il faut faire ici:
void vider_stdin(void) {
char c;
while ((c = getchar()) != '\n' && c != EOF) /* */;
}
et
int main (int argc, char * argv[])
{
int done = 0;
while (!done)
{
printf("Player 2 : " );
char coup;
coup = getchar();
vider_stdin();
}
}
A+,
Marsh Posté le 19-12-2011 à 15:31:41
Bonjour.
Si j'écris le programme suivant, j'obtient deux printf consécutif entre chaque getchar.
Ou est mon erreur s'il vous plaît ?