我正在为gcc编译器寻找gotoxy()的替代品并找到了这个 -
void gotoxy(int x,int y)
{
printf("%c[%d;%df",0x1B,y,x);
}
我想知道它是如何运作的,我的意思是我们何时在printf中使用[
和;
,0x1B
在那里做什么以及它如何将光标移动到这段代码的行/列?
我从来没有在书中看到过这种类型的printf练习,所以如果你能指出我可以找到关于printf的这种用途的链接那就太棒了。
答案 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转义码。我有一段时间没见过那些。这是一个解释它们的页面: