Quote Originariamente inviata da M.A.W. 1968 Visualizza il messaggio
Il comportamento di fflush(stdin) non è definito dallo standard. Praticamente nessuna combinazione di compilatore e SO la supporta, se si parla di mainstream.
L'idioma più standard e portabile è il seguente, fornito in via del tutto eccezionale, poiché trattasi davvero di una FAQ che ricorre centinaia di volte su ogni forum, incluso il presente:

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));
    */
}
Cioè ogni volta che richiedo un carattere in entrata, lo metto nel do while come hai detto?
Non so cosa siano void, kbd_clean ed EOF, ma suppongo di potermene disinteressare per il momento, finche non li vedrò nel,libro.
Il mio libro peraltro suggerisce di usare scanf("%c", &pausa), dove pausa è una variabile ausiliaria, ma non fa mai esempi a riguardo.
Ho provato a metterlo dopo ogni scanf vero e ottengo strani risultati.

Grazie per la pazienza!