使用printf的Linux的gotoxy()实现

Gau*_*ola 12 c printf

我正在为gcc编译器寻找gotoxy()的替代品并找到了 -

void gotoxy(int x,int y)
{
    printf("%c[%d;%df",0x1B,y,x);
}
Run Code Online (Sandbox Code Playgroud)

我想知道它是如何运作的,我的意思是我们什么时候使用[;在printf内部,0x1B在那里做什么以及如何将光标带到这个代码的行/列?

我从来没有在书中看到过这种类型的printf练习,所以它会很棒如果你能指出我可以找到关于printf的这种用途的链接.

Jon*_*art 7

这是使用终端转义码来定位光标.

"\x1B" 是一个转义字符告诉你的终端接下来的内容不是打印在屏幕上,而是指向终端(或者最有可能是终端模拟器)的命令

尾随'f'表示您想要将光标位置强制到某处,由其前面的坐标表示.

Force Cursor Position   <ESC>[{ROW};{COLUMN}f
Run Code Online (Sandbox Code Playgroud)

因此,如果您调用gotoxy(4,2),它最终会发送转义序列"(ESC)[2;4f",其中ESC是字节0x1B.