首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDCurses挂在输入后循环

PDCurses挂在输入后循环
EN

Stack Overflow用户
提问于 2018-06-09 00:56:52
回答 1查看 122关注 0票数 0

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

代码语言:javascript
复制
#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上运行。(13 = ENTER;KEY_ENTER在这里不工作)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 12:10:47

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50769999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档