2

当我使用 PDcurses 并尝试在按下 enter 键时退出 while 循环时while(key != KEY_ENTER),while 循环永远不会退出。但是,当我尝试使用相同的循环退出时while((char)key != '\n'),只要我按下回车,它就会成功退出。为什么'\n'工作而不是KEY_ENTER

顺便说一句,key是一个整数

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

int key;
while((char)key != '\n') {
    key = getch();
    ...
}
4

2 回答 2

3

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

在大多数系统上,如 Windows、Linux 等,该函数实现为'\n'在用户按下 Enter 时返回。对于比较,在 Windows 上,按键本身(Enter)可能表示为 key-code VK_ENTER

PDCurses 正在为您将密钥代码转换为 ASCII 值。

如果您首先调用 PDCurses 函数,您可以获得所需的键值raw(); nonl();。此外,您可能应该使用wgetch()新代码。

于 2010-06-03T04:52:06.967 回答
2
KEY_ENTER == 0x157, '\n' == 0xA

'\n' 是标准的 ASCII 换行符,而 KEY_ENTER 代表键盘代码。请参阅PDCurses 代码

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

于 2010-06-03T04:31:14.917 回答