繁体   English   中英

C 中的文本光标位置处理(Linux 下)

[英]Text-cursor position handling in C (under Linux)

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

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

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

我发现通过包含<windows.h>在 Windows 中这是可能的:

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

我怎么能在 Ubuntu 中做到这一点?

[更新] 哎呀,抱歉,我没有注意到“[C]”标签,我的回答仅指的是 shell 命令。

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

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


原答案:

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

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

tput cup 0 0

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM