getchar()等效于scanf(“%c”)和putchar()等效于printf(“%c”)?

时间:2010-03-20 10:26:03

标签: c scanf getchar putchar

a = getchar()是否等同于scanf("%c",&a);

putchar(a)等同于printf("%c",a);achar变量吗?

2 个答案:

答案 0 :(得分:7)

一般来说,他们是一样的。

但他们并没有采取一些挑剔的方式。键入函数getchar以返回int而不是char。这样做是为了getchar可以包含所有可能的char值以及其他错误代码。

因此,尽管以下内容在大多数编译器中都很乐意编译,但实质上是截断了错误消息

char c = getchar();

但是,函数scanf允许您直接使用char类型,并将错误代码分离为返回值。

答案 1 :(得分:1)

他们在这里做同样的事情。但是,如果您知道自己只是在执行字符,则getcharputchar会更有效率,因为printfscanf变体必须每次都解析字符串确定如何处理您的请求。另外,它们可能会在较低级别的库中调用,这意味着如果在其他地方不需要它们,则可能不必将printf / scanf链接起来。