当我使用pdcurses时,我尝试在按下Enter键时进行一段时间的循环退出 while(key != KEY_ENTER), ,While循环永远不会退出。但是,当我尝试与 while((char)key != '\n'), ,每当我按Enter时,它都会成功退出。为什么 '\n' 工作而不是工作 KEY_ENTER?

顺便提一句, key 是一个

我希望这是代码的相关行:

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
有帮助吗?

解决方案

getch() 是由C运行时库的ANSI C标准定义的函数。

在大多数系统(例如Windows,Linux等)上,都实现此功能以返回 '\n' 当用户按Enter。为了进行比较,在Windows上,键盘本身(ENTER)可以表示为键代码 VK_ENTER.

PDCurses将关键代码转换为您的ASCII值。

如果您首先调用pdcurses函数,则可以获取所需的密钥值 raw(); nonl();. 。另外,您可能应该使用 wgetch() 对于新代码。

其他提示

KEY_ENTER == 0x157, '\n' == 0xA

' n'是标准的ASCII newline,而Key_enter表示键盘代码。看 PDCURSES代码.

有关更多信息,您应该发布代码的相关部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top