考虑以下代码:
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();
独立于我键入的键,程序将关闭而不打印任何消息。
有人可以解释这个程序的行为吗?提前谢谢。
答案 0 :(得分:2)
您调用printw()
打印三条消息之一,然后refresh()
以显示消息。到目前为止,非常好。
然后您立即拨打endwin()
,这可能会清除屏幕(取决于您的termcap / terminfo设置)。
实际上可能会显示消息;它只是不会留在屏幕上足够长的时间来阅读它。
尝试在getch()
来电后添加延迟或其他refresh()
来电。
答案 1 :(得分:0)
如果在refresh()和endwin()之间插入sleep(5),您应该会看到更好的结果。至少,我这样做。