【问题标题】:Overwrite Multiple Terminal Lines覆盖多条终端线
【发布时间】:2017-05-22 14:26:20
【问题描述】:

我正在尝试为使用类似以下循环的 C 项目制作一个简单的 16*16 终端显示:

for(i = 1; i <= 256; i++) {
    printf("%c ", output[i-1]);
    if(i % 16 == 0) {
        printf("\n");
    }
}

要显示这样的东西(但要大一倍):

* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *

问题是,这显然只是在每次刷新显示时打印一个新的显示below,而当我需要over打印它时。回车\r 只覆盖上一行,而我需要覆盖前 16 行。

有没有办法在 C 中做到这一点?我正在使用 Windows,所以我不知道 ncurses 是否是一个选项。

【问题讨论】:

  • 您可能希望使用实际的终端,而不仅仅是不透明的标准输出流。终端控制是特定于平台的,因此请查阅您的供应商文档(我想是 Windows)。另请参阅stackoverflow.com/questions/138153/…
  • 感谢您的建议,我找到了解决方案。
  • 如果 Windows 控制台支持 ANSI 转义码,您可以查看 this question 指向的源代码 - 它会将光标定位在屏幕顶部而不先清除它。

标签: c windows terminal


【解决方案1】:

您需要使用可以处理终端的库。一个这样的库是ncurses

【讨论】:

    【解决方案2】:

    好的,我明白了:在 Windows 上 system("cls") 清除终端。它清除了所有内容,而不仅仅是 16 行,但它确实完成了工作。

    【讨论】:

      猜你喜欢
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2022-11-08
      • 2012-07-02
      • 2014-01-10
      • 1970-01-01
      • 2015-01-22
      相关资源
      最近更新 更多