[英]Cant get the correct value of ASCII using getchar()
这可能是一个简单的更正,因为该程序非常短,但是请帮助我理解为什么我得到奇怪的输出:
#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
您得到10010的原因是因为您按“ d”,然后按“ return”。
将您的printf格式更改为“%d \\ n”,可以更轻松地将其可视化。
解决方法可能是:
while ((x = getchar()) != '\n' )
{
}
这是因为您要截断返回值。
getchar()
返回int
,请getchar()
任何文档 。
必须这样,因为不允许EOF
与任何字符“冲突”。 由于int
大于char
,这允许EOF
是某处表达为数字的空间内int
,而被该组外 char
。
如user876651所解释,输出“ 10010”实际上是两个相邻打印的十进制整数:
'd'
的ASCII码 '\\n'
您应该使用换行符打印: printf("%d\\n", x);
使它们自己运行。
将char x
更改为int x
因为getchar()
返回int
,这就是您要打印的内容。
编辑:
getchar()
起作用,您需要按Enter键,即\\n
也会被打印出来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.