首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kbhit和getchar的奇怪行为

Kbhit和getchar的奇怪行为
EN

Stack Overflow用户
提问于 2017-07-09 12:30:15
回答 1查看 323关注 0票数 1

考虑下面这段C++代码。

代码语言:javascript
复制
    if(_kbhit()){
        //printf("Enter\n");
        c = getchar();
        int d = c;
        printf("%d", d);
        //printf("Exit \n");
    }

我得到的输出是

代码语言:javascript
复制
sd115d100s100

如果我先按s,d,然后按d,s。奇怪的是,当我按下某个字符时,会显示之前按下的字符的ascii。

现在考虑一下,

代码语言:javascript
复制
    if(_kbhit()){
        printf("Enter\n");
        c = getchar();
        int d = c;
        printf("%d", d);
        printf("Exit \n");
    }

这次我得到的输出是

代码语言:javascript
复制
aEnter
97
Exit 
dEnter
100
Exit 
dEnter
100
Exit 
aEnter
97
Exit

现在一切都正确了,当我按下一个字符后,正确字符的ascii代码就会显示出来。

为什么会出现这种反常现象?我该如何纠正这种异常呢?

EN

回答 1

Stack Overflow用户

发布于 2017-07-09 12:58:04

正如注释中提到的,如果看不到整个函数,就很难确定,但我怀疑附加的printf语句正在为您刷新输出缓冲区,因为它们包含换行符。变化

printf("%d", d);

printf("%d\n", d);

看看这样做会不会得到你想要的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44992988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档