使用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转义码。 我有一段时间没见过那些。 这是一个解释它们的页面:

http://en.wikipedia.org/wiki/ANSI_escape_code