2011-08-28 85 views
1

很多时候我见过基于文本的程序来代替已经打印的文本。例如,假设在进步打印为如何在命令提示符下替换已经打印的文本?

Loading: 5% 

程序,然后它说

Loading: 10% 

等,没有打印这是附加新的文本?

这是如何完成的?我还没有在库中看到任何这样的功能(在这种情况下是C)。不过,我有一个想法:有一个可以写入的字符,它将提示返回到当前行的开头(我相信\r)。这可以用来“覆盖”你已经打印到命令提示符的内容吗?我所看到的

+0

你试过了吗? –

+0

使用'printf''\ r'是要走的路。更复杂的是使用curses库。 – Nobody

+0

@George Kastrinis:现在还没有,但我现在就来。^ – gablin

回答

7

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

对于简单的行为,如进度指示器,这是你所需要的。对于更复杂的行为,您需要通过非标准手段来控制终端。在基于Unix的系统上,ncurses库可以使用,它可以让你的光标位置的完全控制,文本颜色,键盘呼应,更细粒度的键盘输入,等等。

在Windows上,有一个用于操作控制台的suite of functions,它们可以完成与Unix控制台大部分相同的操作。

2

一种方法是只打印退格字符的次数,然后替换不管你用新文本删除。

退格字符是由\ b表示一个ASCII控制字符。

+0

刚刚尝试过 - 它的工作原理! Yaay! ^^ – gablin

相关问题