2

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

目前我使用清除屏幕

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

然后我有一堆 printf 语句来更新状态。我想要的只是将屏幕指针重置为 0,0,这样我就可以覆盖我的 printfs。我宁愿避免编译更多的扩展,特别是因为我正在为 2 个不同的操作系统编写代码。

4

4 回答 4

1

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

于 2008-09-11T11:50:31.417 回答
0

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

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

于 2008-09-11T11:43:21.650 回答
0

是的,对于 unix 平台,curses(或 ncurses,这些天)是要走的路。并且有些版本可以在 Windows 下运行,因此您可以在两个系统上以相同的方式进行操作。

于 2008-09-19T01:12:13.753 回答
0

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

于 2009-01-08T17:45:54.797 回答