Con quel codice se l'utente inserisce un EOF (Ctrl-Z su Windows, Ctrl-D su Linux e OS X) oppure se l'input è rediretto da un file e il file termina il tuo programma va in loop infinito.
La cosa è leggermente più sofisticata (devi uscire anche in caso di EOF):
codice:void clear_stdin() { int ch; while((ch=getchar())!='\n' && ch!=EOF) ; }