使用printf的Linux的gotoxy()实现
我正在为gcc编译器寻找gotoxy()的替代品并找到了 –
void gotoxy(int x,int y) { printf("%c[%d;%df",0x1B,y,x); }
我想知道它是如何运作的,我的意思是我们什么时候使用[
和;
在printf里面, 0x1B
在那里做什么以及如何用这段代码将光标带到行/列?
我从来没有在书中看到过这种类型的printf练习,所以它会很棒如果你能指出我可以找到关于printf的这种用途的链接。
这是使用终端转义码来定位光标。
"\x1B"
是一个转义字符,告诉你的终端接下来的内容不是打印在屏幕上,而是指向终端(或者最有可能是终端模拟器)的命令
尾随’f’表示您想要将光标位置强制到某处,由其前面的坐标表示。
Force Cursor Position [{ROW};{COLUMN}f
因此,如果你调用gotoxy(4,2)
,它最终会发送转义序列"(ESC)[2;4f"
,其中ESC
是字节0x1B
。
这些被称为ANSI Escape序列 ,源自1978年推出的DEC VT100显示终端。
这被称为ANSI转义码。 我有一段时间没见过那些。 这是一个解释它们的页面: