Termcaps : 获取光标位置

Termcaps : Get cursor position

我需要用 C 中的 termcaps 获取终端光标的 (Y, X) 位置。

使用 ioctl() 我得到了我的终端屏幕的大小,但我仍然需要找到我的光标所在的位置。

我找到了这个:

CSI 6 n DSR – Device Status Report Reports the cursor position to the application as (as though typed at the keyboard) ESC[n;mR, where n is the row and m is the column. (May not work on MS-DOS.)

但我不知道如何在 C 中使用它...

您使用正常输出到 stdout 将命令序列 (<ESC>[6n) 写入终端。然后您使用来自 stdin.

的正常输入读取响应

您需要解析 "reply" 来选择位置。

这里有一个gotoxy()函数,可以在gcc中指定的xy位置打印linux

#include<stdio.h>
//gotoxy function
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
main ()
{
gotoxy(25,50); //reposition cursor
printf("hello world"); //display text
}

这里是 控制台输入和输出 的参考,如果您使用终端 windows(dos 提示符)