有时候,我们需要在控制台下实现这样的效果:"You have downloaded:5%",这里"5%"是动态百分比。参考一些论坛,总结来,可以用下方的方式实现:
首先,Windows下, \r 可以回到一行开头。
-
C/C++ code
-
#include < stdio.h > #include < unistd.h > int main() { int i; for (i = 0 ; i < 100 ; i += 10 ) { printf( " \rYou have downloaded: %2d " , i); fflush(stdout); //记住 fflush,不然会缓冲。 sleep( 1 ); } putchar( ' \n ' ); return 0 ; }
此外,windows下用\b也是可以达到回退的效果的,所以也可以采用下面的方式:
C/C++ code
#include < iostream > #include < windows.h > // 更改相关的头文件 using namespace std; int main() { int i = 0 ; printf( You have downloaded: " ); for ( int i = 0 ; i < 101 ; ++ i) { printf( " %2.0f%% " , i / 100.0 * 100 ); sleep( 1 ); printf( " \b\b\b " ); } printf( " \b " ); return 0 ; }