我想为我的终端应用程序制作一个进度条,其工作原理如下:

 [XXXXXXX       ] 

这将给出一个视觉指示,显示在流程完成之前还有多少时间.

我知道我可以通过将X添加到字符串中,然后简单地打印F来打印越来越多的X,但这看起来像:

 [XXXXXXX       ] 
 [XXXXXXXX      ] 
 [XXXXXXXXX     ] 
 [XXXXXXXXXX    ] 

或者类似的东西(显然你可以利用间距.)但这并不是视觉上的审美.有没有办法用新文本更新终端中的打印文本,而无需重新打印?这都是Linux下的C++.

推荐答案

打印新"版本"时,try 使用\r而不是\n.

for(int i=0;i<=100;++i) printf("\r[%3d%%]",i);
printf("\n");

Linux相关问答推荐

如何将netcdf文件列表中的特定变量添加到不同的文件中?

在新环境中使用Unicode范围的sed表达式有问题

不带空格的字符串连接形成文件路径

如何在REPL控制台中使用PowerShell将特定的CSV列转换为TitleCase?

加载ELF64头文件为什么会导致分段错误?

awk 使用动态列号

awk 打印除最后一列以外的所有内容 + 最后一列

如何删除文件中不需要的字符(使用 shell 脚本)

访问证书里面的图片

根据外部请求在 Netbeans 中启动 XDebug

如何安装脚本以从命令行的任何位置运行?

如何彻底剥离可执行文件

关于 putenv() 和 setenv() 的问题

从Linux中的行尾删除空格

在 VIM 中搜索和替换导致尾随字符

Pthread mutex互斥断言错误

如何在字符串中查找子字符串(或如何 grep 变量)?

我可以告诉 Linux 不要换出特定进程的内存吗?

os.walk 没有隐藏文件夹

我可以打开一个套接字并将其传递给 Linux 中的另一个进程吗