如何在命令提示符中替换已打印的文本?

时间:2011-08-28 15:48:34

标签: c text command-prompt

很多时候我见过基于文本的程序,它们取代了已经打印过的文本。例如,假设一个程序将进度打印为

Loading: 5%

然后它说

Loading: 10%

等等,没有打印追加的新文字?

这是怎么做到的?我还没有在库中看到任何这样的函数(在本例中为C)。我有一个想法:有一个你可以编写的字符,它将提示返回到当前行的开头(我相信\r)。这可以用来“覆盖”你已经打印到命令提示符的内容吗?

2 个答案:

答案 0 :(得分:7)

在大多数控制台中,写一个裸支架返回\r后没有换行符,它会将光标返回到当前行的开头,允许您覆盖现有文本。写入退格符\b也会将光标移回一个字符。

对于简单的行为,例如进度指示器,这就是您所需要的。对于更复杂的行为,您需要通过非标准方式控制终端。在基于Unix的系统上,可以使用ncurses库 - 它可以完全控制光标位置,文本颜色,键盘回显,更精细的键盘输入等。

在Windows上,有一个suite of functions用于操纵控制台,它们可以与Unix控制台完全相同。

答案 1 :(得分:2)

我看到的一种方法是只打印退格字符多次,然后用新文本替换你删除的内容。

退格符是由\ b。

表示的ASCII控制字符