当我使用PDcurses时,如果用while(key != KEY_ENTER)
按下回车键,我尝试使用while循环退出,while循环永远不会退出。但是,当我尝试使用while((char)key != '\n')
进行相同的循环退出时,只要按下回车键,它就会成功退出。为什么'\n'
有效而不是KEY_ENTER
?
btw,key
是一个int
我希望这是代码中相关的几行:
int key;
while((char)key != '\n') {
key = getch();
...
}
答案 0 :(得分:3)
getch()
是由C运行时库的ANSI C标准定义的函数。
在大多数系统(如Windows,Linux等)上,此功能用于在用户按Enter键时返回'\n'
。对于比较,在Windows上,按键本身(Enter)可能表示为键代码VK_ENTER
。
PDCurses正在将密钥代码转换为ASCII值。
如果您第一次调用PDCurses函数raw(); nonl();
,则可以获得所需的键值。此外,您应该使用wgetch()
来获取新代码。
答案 1 :(得分:2)
KEY_ENTER == 0x157, '\n' == 0xA
'\ n'是标准的ASCII换行符,而KEY_ENTER表示键盘代码。请参阅the PDCurses code。
有关详细信息,请发布代码的相关部分。