La funzione fflush è fatta per operare su stream di output, non di input.Originariamente inviato da mostec
fflush(stdin)
fflush pulisce il buffer dato come parametro. in questo caso lo standard input stdin.
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:
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.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; }![]()

Rispondi quotando