移动光标转义序列

我试图使用转义序列在终端程序中移动光标。在下面的C程序中,前三个命令似乎是成功的(清除屏幕、将光标移回原位、打印一些参考文本),但是我尝试将光标移动到任意位置的最后一个命令失败(2,2),而是将光标移动到第四行的开头,并清除第四行。我做错了什么

\include<标准h>
#包括<stdlib.h>
int main()
{
printf("\x1b[2J");//清除屏幕
printf("\033[H");//将光标移回原位
printf("1111\n2222\n3333\n4444);//在屏幕上添加一些文本以供参考
printf("\033[2;2H);//将光标移动到2,2
while(1);//保持程序运行
}

您需要调用fflush

printf("\033[2;2H");//将光标移动到2,2
fflush(stdout);
while(1);//保持程序运行

请注意,while(1);不是保持程序运行的正确方法,没有睡眠的无休止循环将消耗100%的CPU,取而代之的是:

while(1)sleep(1);/#包括<unistd.h>for sleep()

或者更好:

getchar();

发表评论