-3

我之前使用 getchar 和 putchar 成功地将我输入的字符打印到屏幕上,但是我稍微更改了代码,现在它连续两次打印我输入的字符。代码:

#include <stdio.h>

int main()
{
    int charInput;
    printf("Enter a char >> ");
    charInput = getchar();
    printf("%c", putchar(charInput));

    return 0;
}

我知道我可以在没有 printf 的情况下使用 putchar,但我想尝试一下。我得到的输出是:

Enter a char >> a
aa

2个字符打印到屏幕上?

4

3 回答 3

4

函数putchar(charInput)本身打印 char并返回 char 的十进制等效项(例如 ascii),使用so total print two'a'打印为 char 。printf()a

阅读手册页:

int putchar(int c);

函数, fputc(), putc(), putchar(), putc_unlocked(), 和 putchar_unlocked() 返回写入的字符。如果发生错误,EOF则返回该值。该putw()函数在成功时返回 0;EOF如果发生写入错误,或者尝试写入只读流,则返回。

所以你可以假设:

printf("%c", putchar(charInput));
//      ^            ^ first `a` 
//      | second `a`

相当于:

temp = putchar(charInput);  // first `a`
printf("%c", temp);         // second `a`
于 2013-10-15T17:15:29.307 回答
2

putchar(charInput)将打印您的角色一次,然后返回其参数 charInput. 然后将其传递给printf,它再次打印相同的字符。

于 2013-10-15T17:16:14.917 回答
1

这是因为一个来自printf,另一个来自putchar
只做这个

putchar(charInput);
于 2013-10-15T17:16:10.230 回答