一尘不染

如何在终端中更新打印的消息而无需重新打印

linux

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

 [XXXXXXX       ]

这样可以直观地表明在该过程完成之前还剩下多少时间。

我知道我可以通过将它们添加到字符串中,然后简单地使用printf,来执行诸如打印越来越多的X的操作,但这看起来像:

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

或类似的东西(显然您可以按一定的间距来玩。)但是,这在视觉上并不美观。有没有一种方法可以用新文本更新终端中的打印文本而无需重新打印?这一切都在linux,c
++下。


阅读 294

收藏
2020-06-02

共1个答案

一尘不染

尝试使用\r而不是\n在打印新的“版本”时使用。

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