Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ASCII码移动终端光标? #包括 int main() { printf(“asd”); 字符代码[4]={0x08,0x1b,0x5b,0x4b}; int i=0; 而(i_C_Bash_Terminal_Ncurses - Fatal编程技术网

如何使用ASCII码移动终端光标? #包括 int main() { printf(“asd”); 字符代码[4]={0x08,0x1b,0x5b,0x4b}; int i=0; 而(i

如何使用ASCII码移动终端光标? #包括 int main() { printf(“asd”); 字符代码[4]={0x08,0x1b,0x5b,0x4b}; int i=0; 而(i,c,bash,terminal,ncurses,C,Bash,Terminal,Ncurses,输出: [root@localhost出去 作为 [root@localhost~]# 代码“0x08”似乎将终端光标向左移动到字母“d”位置,“0x1b、0x5b、0x4b”清除字母“d”。 我想知道一些代码的含义,比如{0x08,0x1b,0x5b,0x4b}。是否有相关信息 谢谢。另一个支持我猜测的例子: #include <stdio.h> int main() { printf("asd"); char code[4] = { 0x08 , 0x1b ,

输出:

[root@localhost出去

作为

[root@localhost~]#

代码“0x08”似乎将终端光标向左移动到字母“d”位置,“0x1b、0x5b、0x4b”清除字母“d”。 我想知道一些代码的含义,比如{0x08,0x1b,0x5b,0x4b}。是否有相关信息


谢谢。

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

#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;
}
#包括
int main()
{
printf(“asd”);
字符代码[8]={0x08,0x1b,0x5b,0x4b,0x08,0x1b,0x5b,0x4b};
int i=0;
而(i<8)
{   
putc(代码[i],标准输出);
i++;
}   
printf(“\n”);
返回0;
}
输出:

[root@localhost出去

a


[root@localhost~]#

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

#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;
}
#包括
int main()
{
printf(“asd”);
字符代码[8]={0x08,0x1b,0x5b,0x4b,0x08,0x1b,0x5b,0x4b};
int i=0;
而(i<8)
{   
putc(代码[i],标准输出);
i++;
}   
printf(“\n”);
返回0;
}
输出:

[root@localhost出去

a

[root@localhost~]#

请参见

一个简单的方法就是

#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;
}
它会将光标向右移动10列并打印XYZ:

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

一个简单的方法就是

#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;
}
它会将光标向右移动10列并打印XYZ:

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

您可能需要参考ASCII代码。谢谢你的回复。我使用putc(0x4b,stdout)。它将向终端打印字符“K”。但当我逐个输入“0x08、0x1b、0x5b、0x4b”时,它不会打印K。所以我猜代码“0x08、0x1b、0x5b、0x4b”像命令一样控制终端外观。@rcs:ASCII没有指定终端代码。指向维基百科中一篇关于所谓ANSI转义码(由ISO/IEC 6429/ECMA-48定义)的文章。您可能希望参考ASCII码。谢谢你的回复。我使用putc(0x4b,stdout)。它将向终端打印字符“K”。但当我逐个输入“0x08、0x1b、0x5b、0x4b”时,它不会打印K。所以我猜代码“0x08、0x1b、0x5b、0x4b”像命令一样控制终端外观。@rcs:ASCII没有指定终端代码。指向维基百科上一篇关于所谓的ANSI转义码(实际上是由ISO/IEC 6429/ECMA-48定义的)的文章\e’表示逃生是不标准的;gcc支持它,但其他编译器可能不支持。如果您想要更多可移植的代码,请使用“\x1b”。@KeithThompson谢谢。我从来不知道。我很确定\x1b转义也可以写成\033\e’表示逃生是不标准的;gcc支持它,但其他编译器可能不支持。如果您想要更多可移植的代码,请使用“\x1b”。@KeithThompson谢谢。我从来不知道。我很确定\x1b转义也可以写成\033