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)); */ }