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.