7

a = getchar()相当于scanf("%c",&a);?_

putchar(a)相当于printf("%c",a);哪里是a一个char变量?

4

2 回答 2

8

一般来说,是的,它们是相同的。

但它们并不是以一些挑剔的方式。该函数getchar的类型是 returnint而不是char。这样做是为了getchar同时获得所有可能的char值和额外的错误代码。

因此,虽然以下内容可以在大多数编译器中顺利编译,但您实际上是在截断一条错误消息

char c = getchar();

scanf不过,该函数允许您char直接使用类型并将错误代码分离到返回值中。

于 2010-03-20T10:33:21.843 回答
1

他们在这里做同样的事情。但是,如果您知道您只是在做字符,那么getchar效率putchar会更高,因为printfandscanf变体每次都必须解析字符串以确定如何处理您的请求。另外,它们可能在较低级别的库中被调用,这意味着如果其他地方不需要它们, 您可能不必链接printf/ 。scanf

于 2010-03-20T10:34:35.350 回答