我之前使用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个字符?
答案 0 :(得分:4)
函数putchar(charInput)
本身打印char 'a'
并返回使用printf()
打印为char的char的十进制等效值(例如ascii),因此总共打印了两个a
。< / p>
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`
答案 1 :(得分:2)
putchar(charInput)
会打印一次你的角色,然后返回它的参数,
charInput
。然后将其传递给printf
,再次打印相同的字符。
答案 2 :(得分:1)
这是因为一个来自printf
而另一个来自putchar
只做这个
putchar(charInput);