If you simply want to read a single character from stdin, then getchar()
is the appropriate choice. If you have more complicated requirements, then getchar()
won't be sufficient.
getc()
allows you to read from a different stream (say, one opened with fopen()
);
scanf()
allows you to read more than just a single character at a time.
The most common error when using getchar()
is to try and use a char
variable to store the result. You need to use an int
variable, since the range of values getchar()
returns is "a value in the range of unsigned char
, plus the single negative value EOF
". A char
variable doesn't have sufficient range for this, which can mean that you can confuse a completely valid character return with EOF
. The same applies to getc()
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…