C getchar vs scanf

Je suis confus par un morceau de code dans une fonction, je suis étudiant:

char GetCommand( void )
{
    char command;

    do {
        printf( "Enter command (q=quit, n=new, l=list):  " );
        scanf( "%c", &command );
        Flush();
    }
    while ( (command != 'q') && (command != 'n')
           && (command != 'l') );

    printf( "\n----------\n" );
    return( command );
}

void Flush( void ) {
    while ( getchar() != '\n' )
        ;
}

Ce que je ne comprends pas très bien ici est l'utilisation de la Flush() fonction. Je veux dire, le livre que je lis explique en disant qu'il empêche l'utilisateur de la saisie de plus d'un seul caractère, et puis d'avoir le personnage à lire lorsqu'ils sont invités à fournir la 2ème fois.

Ce que je ne comprends pas, c'est comment Flush() est empêcher que cela se produise. Il NE fait rien. Tout c'est un while de commande. (Ce qui est vrai......quoi?????) Ne fait pas de sens.

source d'informationauteur startuprob