簡體   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