在 Linux 终端编程中,控制光标位置通常使用 curses
库(或 ncurses
,其现代实现)。以下是关键头文件和方法:
<curses.h>
或 <ncurses.h>
#include <ncurses.h>
int main() {
initscr(); // 初始化 curses 模式
move(y, x); // 移动光标到 (y, x) 坐标(行, 列)
printw("Hello"); // 在光标位置输出文本
refresh(); // 刷新屏幕显示
getch(); // 等待用户输入
endwin(); // 退出 curses 模式
return 0;
}
如果不想用 ncurses
,可以通过 ANSI 转义序列 直接控制终端光标(需终端支持):
#include <stdio.h>
int main() {
// \033[y;xH 将光标移动到第 y 行第 x 列
printf("\033[10;20HHello\n"); // 第 10 行第 20 列
return 0;
}
注意:ANSI 方式在不同终端上兼容性可能不一致。
如果系统未安装:
# Debian/Ubuntu
sudo apt-get install libncurses5-dev
# RHEL/CentOS
sudo yum install ncurses-devel
编译时链接库:
gcc program.c -lncurses
curs_set(0)
:隐藏光标getyx()
:获取当前光标位置ncurses
文档。总结:
- 标准方案:使用 <ncurses.h>
(跨终端、功能全面)。
- 快速方案:ANSI 转义序列(简单场景,需注意兼容性)。