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

Posted

技术标签:

【中文标题】将光标移动到当前行的开头【英文标题】:Moving the cursor to the beginning of the current line 【发布时间】:2011-01-24 02:55:15 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

你知道如何在循环中增加行数 例如:for (i = 1; i 【参考方案2】:

写一个\r

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

【讨论】:

【参考方案3】:

在行首打印一个“\r”可能会起作用。

【讨论】:

以上是关于将光标移动到当前行的开头的主要内容,如果未能解决你的问题,请参考以下文章

提高编辑效率的工具vim

vimcutlesscat命令

Linux命令: 编辑模式移动光标

Linux系统提高编辑效率的vim工具重要知识

vim 一些操作

阅读UTL文件时如何将光标移动到new_line?