has un:
fflush(); // stdio o a stdin
antes del getchar();
Si te refieres a utilizar "fflush(stdin)" antes de la llamada a "getchar()" no es una buena idea ya que el estándar de C define la funcion "fflush" solo para streams de salida (stdin es uno de entrada).
El problema con ese bucle es, si por cualquier razón la función retorna EOF, se cae en un bucle infinito. En todo caso:
int ch;
/* ... */
while ((ch
= getchar()) != EOF
&& ch
!= '\n') ;
La mejor solución es utilizar un IDE que soporte la generación automática de una pausa cuando se ejecuta una aplicación de consola, de todos los disponibles el único que recuerdo no la tiene es Dev-C++. Eso o ejecutar la aplicación desde el interprete de comandos disponible (cmd.exe, bash, etc.).
Un saludo