Originariamente inviato da mostec
fflush(stdin)


fflush pulisce il buffer dato come parametro. in questo caso lo standard input stdin.
La funzione fflush è fatta per operare su stream di output, non di input.
Il comportamento di fflush con stream di input non è definito/prestabilito. Una implementazione della fflush potrebbe anche sbattersene degli stream di input e non fare nulla.

Su Windows, ad esempio con VC++, provate:
codice:
#include <windows.h>
#include <stdio.h>

int main (void)
{
    char s[80];

    Sleep (5000);   /* attesa */

    fflush (stdin);

    scanf ("%s", s);

    printf ("[%s]\n", s);

    return 0;
}
Durante quei 5 secondi di attesa, premete tutti i tasti che volete. La fflush dopo NON pulisce il buffer e la scanf successiva riceve tutti i tasti premuti.