请考虑以下代码:
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/