许多命令行工具都实现基于文本的进度条。就像rpm安装一样:
安装##############[45%]
the #
随着百分比增长,同时保持在单行。我想要的是类似的东西:我需要一个进度指示器只占一行,也就是说,当百分比增长时,它被覆盖,而不是创建一个新行(\n
).
我试过这个:
#include <stdio.h>
int main (){
int i = 0;
for (i = 0; i < 10000; i++){
printf("\rIn progress %d", i/100);
}
printf("\n");
}
\r
可以覆盖单行。然而,\r
将光标移至行首并printf
将光标移至末尾,这会导致光标快速摆动。大家稍微编译一下就能感受到。任何人都可以想出替代方案来避免这个问题吗?
这是一个问题stdout
正在缓冲的流。你必须显式地刷新它(隐式刷新发生在\n
) using fflush(stdout)
之后printf()
:
fflush(stdout);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)