使用printf的Linux的gotoxy()实现

时间:2011-12-30 20:03:37

标签: c printf

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

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

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

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

3 个答案:

答案 0 :(得分:7)

这是使用terminal escape codes来定位光标。

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

尾随'f'表示你想强制光标位置在某处,由它前面的坐标表示。

Force Cursor Position   <ESC>[{ROW};{COLUMN}f

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

答案 1 :(得分:3)

这些被称为ANSI Escape Sequences,来源于1978年推出的DEC VT100显示终端。

答案 2 :(得分:1)

这被称为ANSI转义码。我有一段时间没见过那些。这是一个解释它们的页面:

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