【发布时间】:2010-03-20 10:26:02
【问题描述】:
a = getchar() 是否等同于 scanf("%c",&a);?
putchar(a) 是否等同于printf("%c",a);,其中a 是char 变量?
【问题讨论】:
a = getchar() 是否等同于 scanf("%c",&a);?
putchar(a) 是否等同于printf("%c",a);,其中a 是char 变量?
【问题讨论】:
一般来说是的,它们是相同的。
但它们并不是以一些挑剔的方式。键入函数 getchar 以返回 int 而不是 char。这样做是为了使getchar 可以同时获得所有可能的char 值和错误代码。
因此,尽管以下内容在大多数编译器中都能顺利编译,但实际上您实际上是在截断错误消息
char c = getchar();
不过,函数scanf 允许您直接使用char 类型并将错误代码分离到返回值中。
【讨论】:
他们在这里做同样的事情。但是,如果您知道您只是在处理字符,那么 getchar 和 putchar 会更有效,因为 printf 和 scanf 变体每次都必须解析字符串以确定如何处理您的请求。另外,它们可能在较低级别的库中调用,这意味着如果其他地方不需要它们,您可能不必链接 printf/scanf。
【讨论】: