[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 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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 Date d'inscription   Statut Membre Dernière intervention   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 87 Date d'inscription   Statut Membre Dernière intervention   7
 
il ya aussi flushall()
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846 > AmineKalaa Messages postés 87 Date d'inscription   Statut Membre Dernière intervention  
 
flushall n'est pas portable.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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