很多时候我见过基于文本的程序来代替已经打印的文本。例如,假设在进步打印为如何在命令提示符下替换已经打印的文本?
Loading: 5%
程序,然后它说
Loading: 10%
等,没有打印这是附加新的文本?
这是如何完成的?我还没有在库中看到任何这样的功能(在这种情况下是C)。不过,我有一个想法:有一个可以写入的字符,它将提示返回到当前行的开头(我相信\r
)。这可以用来“覆盖”你已经打印到命令提示符的内容吗?我所看到的
很多时候我见过基于文本的程序来代替已经打印的文本。例如,假设在进步打印为如何在命令提示符下替换已经打印的文本?
Loading: 5%
程序,然后它说
Loading: 10%
等,没有打印这是附加新的文本?
这是如何完成的?我还没有在库中看到任何这样的功能(在这种情况下是C)。不过,我有一个想法:有一个可以写入的字符,它将提示返回到当前行的开头(我相信\r
)。这可以用来“覆盖”你已经打印到命令提示符的内容吗?我所看到的
在大多数控制台中,在光标返回到当前行的开始位置后,写入一个没有换行符的裸回车\r
,允许您覆盖现有文本。写入退格字符\b
也会将光标移回一个字符。
对于简单的行为,如进度指示器,这是你所需要的。对于更复杂的行为,您需要通过非标准手段来控制终端。在基于Unix的系统上,ncurses库可以使用,它可以让你的光标位置的完全控制,文本颜色,键盘呼应,更细粒度的键盘输入,等等。
在Windows上,有一个用于操作控制台的suite of functions,它们可以完成与Unix控制台大部分相同的操作。
你试过了吗? –
使用'printf''\ r'是要走的路。更复杂的是使用curses库。 – Nobody
@George Kastrinis:现在还没有,但我现在就来。^ – gablin