考虑这个C ++代码块。
if(_kbhit()){
//printf("Enter\n");
c = getchar();
int d = c;
printf("%d", d);
//printf("Exit \n");
}
我得到的输出是
sd115d100s100
如果我按s,d然后按d,s。奇怪的是,当我按下某个字符时,显示了之前按下的字符的ascii。
现在考虑,
if(_kbhit()){
printf("Enter\n");
c = getchar();
int d = c;
printf("%d", d);
printf("Exit \n");
}
我这次得到的输出是
aEnter
97
Exit
dEnter
100
Exit
dEnter
100
Exit
aEnter
97
Exit
现在一切正常,按下一个角色后,正在显示正确字符的ascii代码。
为什么会出现这种异常现象?我怎样才能纠正这种异常现象?
答案 0 :(得分:2)
正如评论中所提到的,在没有看到整个函数的情况下很难确定,但我怀疑额外的printf
语句正在为您刷新输出缓冲区,因为它们包含换行符。变化
printf("%d", d);
到
printf("%d\n", d);
并查看是否没有您想要的结果。