【问题标题】:Reset screen point to the top of screen in Windows & Linux console在 Windows 和 Linux 控制台中将屏幕点重置为屏幕顶部
【发布时间】:2010-09-08 13:14:20
【问题描述】:

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

目前我使用清除屏幕

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

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

【问题讨论】:

    标签: c console


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • Linux 不能保证 ansi 转义,使用不同终端类型的可能性很小。您可能需要在 Termcap 或 Terminfo 中验证该功能。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-03
          • 2019-11-16
          • 1970-01-01
          • 1970-01-01
          • 2015-04-09
          • 2012-11-10
          • 2012-02-07
          • 1970-01-01
          相关资源
          最近更新 更多