1

考虑这段代码:

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();

与我键入的键无关,程序关闭时不打印任何消息。

有人可以解释这个程序的行为吗?提前致谢。

4

2 回答 2

2

您调用printw()打印三个消息之一,然后refresh()显示消息。到现在为止还挺好。

然后您立即调用endwin(),这(取决于您的 termcap/terminfo 设置)可能会清除屏幕。

消息实际上是显示的;它只是没有在屏幕上停留足够长的时间让您阅读。

getch()尝试在通话后添加延迟或另一个refresh()通话。

于 2012-07-01T01:53:33.000 回答
0

如果你在你的 refresh() 和你的 endwin() 之间插入一个 sleep(5),你应该会看到更好的结果。至少,我愿意。

于 2012-09-05T17:57:08.820 回答