如何用ASCII码移动终端光标?

ttw*_*ard 1 c bash terminal ncurses

#include <stdio.h>
int main()
{
    printf("asd");
    char code[4] = { 0x08 ,  0x1b , 0x5b ,0x4b } ; 
    int i = 0 ; 
    while ( i  < 4  )
    {   
        putc(code[i], stdout);
        i++;
    }   
    printf("\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

[root@localhost ~]# ./a.out

作为

[root@localhost ~]#

似乎代码 "0x08" 将终端光标向左移动到字母 "d" 位置,而 "0x1b , 0x5b ,0x4b" 清除字母 "d" 。我想知道一些代码的含义,比如 { 0x08 , 0x1b , 0x5b ,0x4b } 。有相关资料吗?

谢谢。

kon*_*box 5

请参阅ANSI 转义码

你可以做到的一种简单方法是

printf("\e[10C%s\n", "XYZ");
Run Code Online (Sandbox Code Playgroud)

它会将光标向右移动 10 列并打印 XYZ:

          XYZ
Run Code Online (Sandbox Code Playgroud)

  • ;\e' 用于转义是非标准的;gcc 支持它,但其他编译器可能不支持。如果您想要更多可移植的代码,请改用 '\x1b'。 (4认同)