日期:2014-05-16  浏览次数:20627 次

怎么从curses模式切换到字符模式?
我有一个程序做一个登陆界面,用的curses,登陆完了以后,想反回字符模式,但是怎么也回不去,用printf输出来的东西不知道跑哪去了,等程序执行完了,才显示出来求大神指教,怎么也解决不了,用endwin也不行!!跪求大神解答

------解决方案--------------------
就是用endwin()

可能还需要一些你之前的初始化屏幕时的相反操作比如:
echo();
clear();
endwin();
nl();
------解决方案--------------------
你要把endwin()放在最后啊。
那的看看endwin()的具体功能,看它到底做了什么。
printf不是输出原因是,你没有加“\n”,那么在行缓冲的模式下,只有接收到换行符才会输出。
楼主可以搜“行缓冲,全缓冲,无缓冲”的概念。
------解决方案--------------------
恩,还有一个问题endwin()需要放在box()之后

initscr();
box(stdscr,'*','*'); // 估计该函数重新调用了initscr()
endwin();
echo();
refresh();
getch();
printf("sjdgd\n");
getchar();
这样写代码是基本没有问题的。但是box()函数修改了终端环境的设置,因此,退出来时不一定能够正常的shell状态。这个需要LZ去学习终端环境编程相关的东西,不是一两句可以说得清的。
------解决方案--------------------
探讨

引用:

你要把endwin()放在最后啊。
那的看看endwin()的具体功能,看它到底做了什么。
printf不是输出原因是,你没有加“\n”,那么在行缓冲的模式下,只有接收到换行符才会输出。
楼主可以搜“行缓冲,全缓冲,无缓冲”的概念。


我有一个程序做一个登陆界面,用的curses,登陆完了以后,就回到字符界面,用printf去输出,但是输不出来,我试……