C如何在curses程序结束后将屏幕恢复正常

时间:2013-11-01 10:15:36

标签: c terminal ncurses

我还是C和ncurses的新手。我被要求做一项涉及制作多线程乒乓球比赛的任务。游戏运行正常并以正确的丢失条件结束但在终止时我的终端全部搞砸了。我没有回音,所以我必须输入stty echo来取回,即使这样终端表现得很奇怪。

我的结束功能如下:

void wrap_up(){

    curs_set(1);
    clear();
    endwin();
    refresh();
}

这是截图。我该如何解决?

enter image description here

2 个答案:

答案 0 :(得分:7)

在endwin之后删除刷新。在endwin之后调用刷新会导致程序返回到curses模式。

答案 1 :(得分:-1)

嗯,这取决于你想要如何实现它。 为了使其可移植,您可能希望实现编译指令以根据您正在使用的操作系统清除屏幕。

E.g:

void Refresh(){
#ifdef WIN_32_OS
  system("cls");
#elif LINUX_OS
  system("clear");
#else // (DOS, for example)
  system("Another command");
#endif
}

所以在编译时你可以使用类似的东西:

  

bash2.2 $ gcc -c -DLINUX_OS code.c -o code