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 中是可能的,方法是包含 <windows.h>
:
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) 位置,无论您使用什么终端(如果这样的终端允许您移动光标)
将3[H
写入控制台,这会将光标置于终端的左上角。
为此,终端必须与 ANSI 兼容(例如,xterm
终端或 linux 控制台)
无论如何,我建议您使用 ncurses 库,它为您提供了很多可能性,除此之外,而且以一种与终端类型无关的方式(因此它将 运行 在几乎任何已知的终端类型中,例如惠普终端)
我试图在每一帧将文本光标重新定位到控制台的左上角,因此结果正方形呈现在相同的位置
#include <stdio.h>
#include <stdlib.h>
int main() {
while(1) {
printf("\u2554\u2550\u2550\u2550\u2557\n\u255A\u2550\u2550\u2550\u255D\n");
}
}
我发现这在 windows 中是可能的,方法是包含 <windows.h>
:
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) 位置,无论您使用什么终端(如果这样的终端允许您移动光标)
将3[H
写入控制台,这会将光标置于终端的左上角。
为此,终端必须与 ANSI 兼容(例如,xterm
终端或 linux 控制台)
无论如何,我建议您使用 ncurses 库,它为您提供了很多可能性,除此之外,而且以一种与终端类型无关的方式(因此它将 运行 在几乎任何已知的终端类型中,例如惠普终端)