Vider le buffer

chocolat8886 -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
pour vider le buffer, est ce que int c; while ((c = getchar()) != EOF) pourrait suffir
pourquoi rajouter c!= '\n' ?
merci

Configuration: Windows / Chrome 81.0.4044.129

2 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut chocolat8886,

     int c;
     while((c = getchar()) != '\n' && c != EOF)
      /* vider stdin */ ;


    Est la façon concise et portable de consommer le reste du contenu de
    stdin
    sur la ligne de saisie en ignorant tous les caractères rencontrés jusqu'au retour à la ligne et en arrêtant la boucle s'il ne reste plus rien et qu'un caractère de fin de ligne n'a pas été rencontré.

    Cela permet par exemple de gérer une saisie par ligne avec des fonctions comme
    scanf()
    .

    Tu proposes :

     int c;
     while ((c = getchar()) != EOF)
         ;


    Tu peux faire cela si tu veux consommer tout le contenu du tampon de
    stdin
    , même s'il contient des caractères concernant une ligne suivante. Avec ce code, utiliser une variable
    int c;
    est inutile.

    Note que j'ai rajouté le
    ;
    que tu avais oublié. Prend l'habitude de le mettre sur une ligne suivante tout seul, pour bien signaler dans ton code cette construction particulière.

    Dal
    0