Volgens mij wordt deze fflush gedaan gewoon om te zorgen dat er niet per ongeluk nog een teken op de terminal staat. Ik herinner me nog uit mijn C-tijd, dat je soms door een vraag werd geloodst voor je kon antwoorden, omdat er nog een [Enter]-teken op de terminal stond.
Door fflush te doen zijn alle tekens die mogelijk nog zijn ingegeven volledig weg, volgens mij.
Die getchar() wacht dan gewoon de hele tijd tot er iets wordt ingegeven in de terminal, waardoor het programma effectief 'wacht' tot er iets gebeurd.