【问题标题】:Is getchar() equivalent to scanf("%c") and putchar() equivalent to printf("%c")?getchar() 是否等同于 scanf("%c") 和 putchar() 是否等同于 printf("%c")?
【发布时间】:2010-03-20 10:26:02
【问题描述】:

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

putchar(a) 是否等同于printf("%c",a);,其中achar 变量?

【问题讨论】:

标签: c scanf getchar putchar


【解决方案1】:

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

但它们并不是以一些挑剔的方式。键入函数 getchar 以返回 int 而不是 char。这样做是为了使getchar 可以同时获得所有可能的char 值和错误代码。

因此,尽管以下内容在大多数编译器中都能顺利编译,但实际上您实际上是在截断错误消息

char c = getchar();

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

【讨论】:

  • 不是错误消息(如复数形式),“仅”EOF。但除此之外,这是正确的。还应该说getchar()比scanf()效率高很多,因为库不必解析格式字符串(而且链接器也不必链接到scanf( ))。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 2019-11-11
    • 2017-12-17
    • 2012-06-03
    • 2017-11-29
    • 2010-11-30
    • 2017-01-20
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多