Effacer Tampon

Les fonctions qui demandent la saisie de texte par le clavier mettent en tampon toutes les lettres jusqu’à ce que l’utilisateur appuye sur la touche entrée. Cette touche entrée est aussi placée dans le tampon.

Dans le programme qui suit on demande à l’utilisateur d’entrer 5 valeurs au clavier successivement

#include<stdio.h>

main() {

    puts("ecrivez 'a' puis appuyez sur entree");
    if(getchar() == 'a')
        puts("1");
    puts("ecrivez 'b' puis appuyez sur entree");
    if(getchar() == 'b')
        puts("2");
    puts("ecrivez 'c' puis appuyez sur entree");
    if(getchar() == 'c')
        puts("3");
    puts("ecrivez 'd' puis appuyez sur entree");
    if(getchar() == 'd')
        puts("4");
    puts("ecrivez 'e' puis appuyez sur entree");
    if(getchar() == 'e')
        puts("5");
    
    puts("Fin du programme");

}

En entrant a puis appuyant sur entrée, le premier test se valide, mais le deuxième caractère dans le tampon est entrée et ce caractère est différent de b, donc le chiffre 2 ne s’affiche pas et le programme demande la troisième entrée. Il convient donc avant tout apel à getchar, scanf, etc. d’enlever tout caractère qui puisse se trouver dans le tampon d’entrée. On peut le faire ainsi

#include<stdio.h>

main() {

    puts("ecrivez 'a' puis appuyez sur entree");
    while(getchar() != '\n') {}
    if(getchar() == 'a') {
        puts("1");
    }
    
    puts("ecrivez 'b' puis appuyez sur entree");
    while(getchar() != '\n') {}
    if(getchar() == 'b') {
        puts("2");
    }
    
    puts("ecrivez 'c' puis appuyez sur entree");
    while(getchar() != '\n') {}
    if(getchar() == 'c') {
        puts("3");
    }

    puts("ecrivez 'd' puis appuyez sur entree");
    while(getchar() != '\n') {}
    if(getchar() == 'd') {
        puts("4");
    }
    
    puts("Fin du programme");

}

while(getchar() != '\n') {} lit chaque caractère du tampon jusqu’à tomber sur le saut de ligne, ce dernier sera également consommé.