将屏幕重设到Windows和Linux控制台中的屏幕顶部

时间:2020-03-05 18:51:22  来源:igfitidea点击:

我有一个小例程,可以在用C语言编写的Linux和Windows下运行,并在控制台上显示输出。我没有以任何形式的诅咒或者类似的方式联系在一起。

目前我使用清除屏幕

#ifdef __WIN32
  system( "cls" );
#else
  system( "clear" );
#endif

然后,我有一堆printf语句来更新状态。我只想将屏幕指针重置为0,0,这样我就可以覆盖我的printfs了。我宁愿避免编译更多扩展,尤其是因为我要为2个不同的OS编码。

解决方案

回答

看起来我可能已经找到Windows的特定设置方法SetConsoleCursorPosition

对于Linux,Ansi转义序列\ 033 [0; 0H"仅将其打印到控制台。

回答

对于类Unix平台,执行此操作的通常方法是使用curses库。

回答

是的,对于unix平台来说,诅咒(或者现在是ncurses)是必经之路。而且有在Windows下运行的版本,因此我们可以在两个系统上以相同的方式进行操作。

回答

对于Windows,可以使用ANSI转义字符。

http://www.lexipixel.com/news/star_dot_star/using_ansi_escape_sequences.htm

http://www.robvanderwoude.com/ansi.html

printf "\x[0;0H"

以前,我们需要先加载Ansi.sys,然后才能这样做,但是值得一试。

添加ANSI支持的说明
http://www.windowsnetworking.com/kbase/WindowsTips/WindowsXP/UserTips/CommandPrompt/CommandInterpreterAnsiSupport.html
注意:Ansi.sys仅在command.com下工作。我们不能与cmd.exe一起使用