[Langage C] Pb do while

Résolu
Lapincretin -  
 Lapincretin -
Bonjour à tous, ou bonsoir,

Voici mon problème : j'ai une boucle do while, et dans cette boucle, je lis un caractère (il s'agit du menu de mon appli). Le problème, c'est que mon programme passe de fois dans la boucle while et je ne comprends pas pourquoi.

Voici mon code :

int main()
{
    char rep;
    do
    {
        printf("\n  Votre reponse ?>");
        scanf("%c",&rep);

        switch(rep)
        {
            case '1': appServer(); break;
            case '2': appClient(); break;
        }
    } while(rep != '3');
    return 0;
}


Et donc, après avoir entré '1' ou '2', mon programme affiche "Votre reponse ?>" 2 fois, et c'est uniquement au deuxième affichage qu'il me redemande de saisir une réponse.

Merci d'avance pour votre aide !
A voir également:

3 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
C'est normal, il faut flusher le buffer.
Un simple getchar(); après ton scanf suffira. Par contre attention à l'utilisation de scanf sans contrôle, ça peut être dangereux.
Cdlt
1
guillaume8231 Messages postés 14 Statut Membre 1
 
tu peux faire aussi un fflush(stdin); avant ou apré ton scanf. il faut mettre par contre la bibli conio.h je crois
0
AmineKalaa Messages postés 109 Statut Membre 7
 
il ya aussi flushall()
0
fiddy Messages postés 11653 Statut Contributeur 1 847 > AmineKalaa Messages postés 109 Statut Membre
 
flushall n'est pas portable.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Non, fflush c'est dans stdio.h. Mais le problème c'est que celui-ci a un comportement indéfini sur les entrées comme stdin.
0
Lapincretin
 
Merci a tous pour vos réponses ça marche nickel avec un getchar().
0