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

时间:2010-03-05 13:14:05

标签: c unix cursor cursor-position

我想在同一个地方打印当前时间(通过使用printf),但我想在无限循环中执行此操作,例如:

while(1) {printf("Date and Time are %s", asctime(localtime(&current))); } 

。所以在我使用printf之前,我应该将光标向后移动到它的凝视位置。怎么做?

事先提前

4 个答案:

答案 0 :(得分:8)

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

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

还有其他颜色代码和其他代码:http://bluesock.org/~willg/dev/ansi.html

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

答案 1 :(得分:6)

写一个\ r

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

答案 2 :(得分:3)

你可以这样做(查看带有许多空格的\ r \ n):

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

答案 3 :(得分:0)

可能会在行的开头打印一个“\ r”。