Quote Originariamente inviata da M.A.W. 1968 Visualizza il messaggio
Per la pulizia del buffer occorre quindi un idioma specifico, come il seguente.

codice:
void kbd_clean(void)
{
    register char ch;
    do 
    {
        ch = getchar();
    } while (('\n' != ch) && (EOF != ch));
    /* 
    ** Alternativamente, piu' in sintesi: 
    ** while ((ch = getchar() != '\n') && (ch != EOF));
    */
}
Le funzioni unbuffered, come getch(), non hanno questo genere di problemi e restituiscono direttamente il primo tasto premuto.
Non accedono ad alcun buffer interno e non richiedono la pressione di tasti specifici. Nulla di particolarmente esotico.
Quindi se ho capito bene quando questo codice viene eseguito e si arriva sulla getchar il controllo passa al sistema operativo e non ritorna fintanco che non premiamo enter, una volta premuto enter la getchar preleva a uno a uno i caratteri dal buffer e li inserisce nella variabile ch.
Però quello che non capisco è:
Tratto da Programmare in c:
Alcune funzioni dispongono di un buffer dove il sistema operativo memorizza tutti i caratteri finchè l'utente non preme invio per inviarli al flusso stdin. Altre sono prive di buffer, quindi ogni carattere è inviato a stdin non appena viene premuto il tasto corrispondente.

Che significa inviare al flusso di stdin,cioè dal buffer passano al flusso di stdin e dopo vengono letti dal programma?