Is getchar() equivalent to scanf("%c") and putchar() equivalent to printf("%c")?
Is a = getchar开发者_如何学JAVA()
equivalent to scanf("%c",&a);
?
Is putchar(a)
equivalent to printf("%c",a);
where a
is a char
variable?
Generally speaking yes they are the same.
But they are not in a few nitpicky ways. The function getchar
is typed to return int
and not char
. This is done so that getchar
can both all possible char
values and additionally error codes.
So while the following happily compiles in most compilers you are essentially truncating away an error message
char c = getchar();
The function scanf
, though, allows you to use a char
type directly and separates out the error code into the return value.
They do the same thing here. However, if you know you are just doing characters then getchar
and putchar
will be more efficient, since the printf
and scanf
variants will have to parse the string each time to determine how to process your request. Plus, they may be called in a lower level library meaning you may not have to have the printf
/scanf
linked if they are not needed elsewhere.
精彩评论