Basically, getc reads 1 character from the stdin stream. If you type characters before your program is ready to accept input, they get buffered in the stdin stream and you can read them later with functions like getc (or the other functions that work on streams). You can also using functions like fflush, to clear a stream, so there are no buffered characters. Useful if you want to ask the user to enter a password (you don't what mistaken press keys earlier to end up in the input for that).