请考虑以下代码:

if(initscr() == NULL) ERROR("Cannot start ncurses mode.\n");

    keypad(stdscr, TRUE);

    cbreak();

    int reply = getch();

    if(reply == 'y')
        printw("yes!\n");
    else if(reply == 'n')
        printw("no!\n");
    else
        printw("invalid answer!\n");

    refresh();

    endwin();

与我键入的键无关,程序关闭时不打印任何消息。
有人能解释一下这个程序的行为吗?提前谢谢。

最佳答案

您可以调用printw()来打印三条消息中的一条,然后调用refresh()来显示该消息。到目前为止,还不错。
然后立即调用endwin(),这(取决于termcap/terminfo设置)可能会清除屏幕。
很有可能这条消息是真的显示出来的;它只是没有在屏幕上停留足够长的时间让你阅读它。
尝试在getch()调用之后添加延迟或另一个refresh()调用。

关于c - 如何使用getch()(来自curses库)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11279012/

10-11 22:06