a = getchar()
是否等同于scanf("%c",&a);
?
putchar(a)
等同于printf("%c",a);
,a
是char
变量吗?
答案 0 :(得分:7)
一般来说,他们是一样的。
但他们并没有采取一些挑剔的方式。键入函数getchar
以返回int
而不是char
。这样做是为了getchar
可以包含所有可能的char
值以及其他错误代码。
因此,尽管以下内容在大多数编译器中都很乐意编译,但实质上是截断了错误消息
char c = getchar();
但是,函数scanf
允许您直接使用char
类型,并将错误代码分离为返回值。
答案 1 :(得分:1)
他们在这里做同样的事情。但是,如果您知道自己只是在执行字符,则getchar
和putchar
会更有效率,因为printf
和scanf
变体必须每次都解析字符串确定如何处理您的请求。另外,它们可能会在较低级别的库中调用,这意味着如果在其他地方不需要它们,则可能不必将printf
/ scanf
链接起来。