gpt4 book ai didi

c - PDCurses 循环后卡在输入上

转载 作者:行者123 更新时间:2023-11-30 14:48:03 25 4
gpt4 key购买 nike

当我构建 PDCurses 应用程序时,我遇到了一个问题,即当我等待输入时,它会挂起并且不会将任何数据传递给程序,即使它在技术上仍在读取输入。我设法将其归结为以下代码:

#include <curses.h>

main()
{
initscr(); // initialize screen
noecho(); // don't echo the keys to the screen
cbreak(); // no waiting for enter key
clear(); // clear screen

while (getch() != 13) // loop until they press ENTER
mvaddch(0, 0, 'a'); // GETS PAST HERE

getch(); // HANGS; WINDOWS IS RECEIVING INPUT FROM THE KEYBOARD (turn off noecho()), BUT NEVER RETURNS IT TO THE ACTUAL PROGRAM

return 0;
}

为了了解如何在我的程序中显示它,我在 main() 中有一个循环,它无限地调用一个函数,该函数将显示一个菜单,直到按下 ENTER 键为止。但是,如果用户在菜单中按下特定键,它将调用另一个菜单并从该功能获取输入。在上面的代码中,我通过仅进行两个后续的 getch() 调用来简化它。

我的问题是,为什么它仅在循环检查 ENTER 键后才挂起?这不是很简单的事情吗?

此外,我的 PDCurses 应用程序正在 Windows cmd 上运行。 (13 = ENTER;KEY_ENTER 在此不起作用)

最佳答案

按 ENTER 键会使 getch() 返回 10 (LF),而不是 13 (CR)。因此,永远不会到达第二个getch()。这并非特定于 PDCurses 或 Windows。您可以通过调用 raw() 来更改 PDCurses 在这方面的行为,但这可能是 PDCurses 特定的。

关于c - PDCurses 循环后卡在输入上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50769999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com