i think on some platforms reading from stdin does an automatic flush on stdout. this might even be the standard. anyway, it's probably safer to do printf("\nQuit [q], confirm [y], or change [menu] settings: "); fflush(stdout); /* read one char */ ch = getchar();