Giusto per pignoleria: se l'utente inserisce un EOF (con Ctrl+D, o redirezionando l'input su un file) quel ciclo diventa un loop infinito. Per questo in genere consiglio:
codice:
int ch=0;
while(ch!='\n' && ch!=EOF)
    ch=getchar();
(o, se ci si sente particolarmente criptici:
codice:
int ch;
while((ch=getchar())!='\n' && ch!=EOF);
)
Originariamente inviato da davidinho
e con
while (getchar() != '\n');
se il buffer è già vuoto il programma non si blocca attendendo l'input?
Sì, si blocca. Purtroppo il C standard non fornisce alternative portabili per svuotare il buffer a prescindere dal suo contenuto.