将屏幕指向Windows和Linux控制台中的屏幕顶部

我有一个小例程,它运行在用C语言编写的Linux和Windows下,并在控制台上显示输出。 我没有以任何forms的诅咒或类似的东西进行链接。

目前我使用清除屏幕

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

然后我有一堆printf语句来更新状态。 我只想将screenpointer重置为0,0所以我可以覆盖我的printfs。 我宁愿避免编译任何更多的扩展,特别是因为我正在编写2个不同的OS’。

对于类Unix平台,通常的方法是使用curses库。

看起来我可能已经找到了一个特定于Windows的方法来做SetConsoleCursorPosition

Ansi转义序列\ 033 [0; 0H for Linux – 只需打印到控制台即可。

是的,对于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一起使用