C 将光标移动到当前行的开头

C 将光标移动到当前行的开头,c,unix,cursor,cursor-position,C,Unix,Cursor,Cursor Position,我想在同一个地方打印当前时间(使用printf),但我想在无限循环中这样做,例如: while(1) {printf("Date and Time are %s", asctime(localtime(&current))); } 。所以在使用printf之前,我应该将光标向后移动到它的起始位置。怎么做 thx预先在行首打印一个“\r”可能有用。写一个\r while(1) { printf("\rDate and Time are %s ", asctime(local

我想在同一个地方打印当前时间(使用printf),但我想在无限循环中这样做,例如:

while(1) {printf("Date and Time are %s", asctime(localtime(&current))); } 
。所以在使用printf之前,我应该将光标向后移动到它的起始位置。怎么做

thx预先

在行首打印一个“\r”可能有用。

写一个\r

while(1) {
 printf("\rDate and Time are %s      ", asctime(localtime(&current)) );
 fflush(stdout);
}

为了简单地将光标移动到当前行的开头,您可以打印“\r”,这样做就可以了。请注意,它不会删除旧文本,因此请小心覆盖它或使用ANSI代码清除

在使用ANSI/VT控制代码的系统上,您可以打印“\033[1;2H”来定位光标。它将移动光标,并且不会在屏幕上打印任何内容。值1和2是行和列,因此将它们更改为使用不同的位置

还有其他颜色和其他东西的代码:


请注意,这些代码都不是可移植的,它们可能无法在所有系统上工作(最明显的是,它们在某些Microsoft系统上默认不工作)。非支持系统将在屏幕上显示一些垃圾(代码本身)。

您知道如何增加循环中的行数,例如:for(i=1;i<10;i++){printf(“\033”[i;第%d行中的1H文本,i);}(它不起作用,所以我应该使用escpae'i'?或者它是另一种方法?