繁体   English   中英

无法使用getchar()获得正确的ASCII值

[英]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”实际上是两个相邻打印的十进制整数:

  • 100是小写字母'd'的ASCII码
  • 10是ASCII的换行符'\\n'

您应该使用换行符打印: printf("%d\\n", x); 使它们自己运行。

char x更改为int x因为getchar()返回int ,这就是您要打印的内容。

编辑:

getchar()起作用,您需要按Enter键,即\\n也会被打印出来。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM