【问题标题】:Text-cursor position handling in C (under Linux)C 中的文本光标位置处理(在 Linux 下)
【发布时间】:2021-02-15 16:28:14
【问题描述】:

我正在尝试将文本光标重新定位到每一帧控制台的左上角,因此生成的正方形呈现在相同的位置

#include <stdio.h>
#include <stdlib.h>

int main() {
    while(1) {
        printf("\u2554\u2550\u2550\u2550\u2557\n\u255A\u2550\u2550\u2550\u255D\n");
    }
}

我发现在 Windows 中可以通过包含 &lt;windows.h&gt;:

HANDLE hOut;
    COORD Position;
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    Position.X = 0;
    Position.Y = 0;
    SetConsoleCursorPosition(hOut,Position);

如何在 Ubuntu 中做到这一点?

【问题讨论】:

  • 不,我该如何尝试?
  • 在 POSIX 系统(如 Linux)上,我建议您仔细查看 ncurses 库。
  • 可以完成这项工作,谢谢@xing
  • 我去看看,谢谢@Someprogrammerdude

标签: c linux console caret


【解决方案1】:

[update] 糟糕,抱歉,我没有注意到“[C]”标签,我的回答只是指 shell 命令。

实际的答案是使用类似curses 的库,例如ncurses

例如,您要查找的函数通常是move()


原答案:

在 Unix 系统上,移动光标取决于您使用的终端类型。

ncurses 这样的库旨在提供与终端无关的功能。 tput 是一个使用ncurses 使某些终端功能(如移动光标)可用于命令行的命令:

tput cup 0 0

无论您使用什么终端,都会将光标置于 (0,0) 位置(如果这样的终端允许您移动光标)

【讨论】:

    【解决方案2】:

    \033[H 写入控制台,这会将光标放在终端的左上角。

    为此,终端必须与 ANSI 兼容(例如,xterm 终端或 linux 控制台)

    无论如何,我建议您使用 ncurses 库,它为您提供了许多可能性,除此之外,并且以独立于终端类型的方式(因此它几乎可以在任何已知的终端类型中运行,例如 hp 终端)

    【讨论】:

      猜你喜欢
      • 2011-11-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多