这可能是一个简单的修正,因为该程序超短但请帮助我理解为什么我会得到奇怪的输出:
#include <stdio.h>
int main(void)
{
char x;
printf("please enter a word, and ctrl + d to see the resault\n");
while ((x = getchar()) != EOF)
{
printf("%d", x);
}
return 0;
}
intput: 'd'
output: 10010
答案 0 :(得分:3)
你获得10010的原因是因为你按'd'后跟'return'。
将您的printf格式更改为“%d \ n”,以便更容易地将其显示。
修复可能是:
while ((x = getchar()) != '\n' )
{
}
答案 1 :(得分:2)
这是因为你要截断返回值。
getchar()
返回int
,请查看any documentation。
必须这样,因为EOF
不能与任何角色“碰撞”。由于int
大于char
,因此EOF
允许int
位于可表示为char
的数字空间内,而外该集合'd'
。
正如user876651所解释的那样,输出“10010”实际上是两个十进制整数,彼此相邻:
'\n'
printf("%d\n", x);
您应该使用换行符{{1}}进行打印,以便在自己的行上进行打印。
答案 2 :(得分:1)
将char x
更改为int x
,因为getchar()
返回int
,这就是您要打印的内容。
编辑:
getchar()
工作,您需要按Enter键\n
,这也将被打印。