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

时间:2014-07-08 09:17:59

标签: 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;
}

输出:

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

作为

[root @ localhost~]#

似乎代码&#34; 0x08&#34;将终端光标移动到字母&#34; d&#34;位置,&#34; 0x1b,0x5b,0x4b&#34;清理字母&#34; d&#34; 。 我想知道一些代码的含义,如{0x08,0x1b,0x5b,0x4b}。是否有相关信息?

感谢。

2 个答案:

答案 0 :(得分:4)

请参阅ANSI escape code

你能做到的一个简单方法是

printf("\e[10C%s\n", "XYZ");

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

          XYZ

答案 1 :(得分:0)

支持我猜测的另一个例子:

#include <stdio.h>
int main()
{
    printf("asd");
    char code[8] = { 0x08 ,  0x1b , 0x5b ,0x4b , 0x08 ,  0x1b , 0x5b ,0x4b } ; 
    int i = 0 ; 
    while ( i  < 8  )
    {   
        putc(code[i], stdout);
        i++;
    }   

    printf("\n");
    return 0;
}

输出:

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

[root @ localhost~]#