很多次我看到基于文本的程序替换已经打印的文本。例如,想象一个程序,其中进度打印为
Loading: 5%
然后它说
Loading: 10%
等等,没有打印附加的新文本?
这是怎么做到的?我还没有在库中看到任何此类函数(在本例中为 C)。不过,我有一个想法:您可以编写一个字符,将提示返回到当前行的开头(我相信是 \r
)。这可以用来“覆盖”您已经打印到命令提示符的内容吗?
最佳答案
在大多数控制台中,写一个没有换行符的纯回车 \r
会将光标返回到当前行的开头,允许您覆盖现有文本。写入退格字符 \b
也会将光标向后移动一个字符。
对于简单的行为,例如进度指示器,这就是您所需要的。对于更复杂的行为,您需要通过非标准手段来控制终端。在基于 Unix 的系统上,ncurses可以使用库——它使您可以完全控制光标位置、文本颜色、键盘回显、更精细的键盘输入等等。
在 Windows 上,有一个 suite of functions用于操纵控制台,它们可以做与 Unix 控制台基本相同的事情。
关于c - 如何替换命令提示符中已打印的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221961/