我正在为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的这种用途的链接.
这是使用终端转义码来定位光标.
"\x1B" 是一个转义字符告诉你的终端接下来的内容不是打印在屏幕上,而是指向终端(或者最有可能是终端模拟器)的命令
尾随'f'表示您想要将光标位置强制到某处,由其前面的坐标表示.
Force Cursor Position <ESC>[{ROW};{COLUMN}f
Run Code Online (Sandbox Code Playgroud)
因此,如果您调用gotoxy(4,2),它最终会发送转义序列"(ESC)[2;4f",其中ESC是字节0x1B.