问我如何显示一个可以原地更新的完成百分比指示器,或者显示那种“旋转指挥棒”的进度指示器?
答至少,这些简单的事情你可以相当方便地实现。打印字符'\r'通常会让你回车而不换行,这样你就可以覆盖当前行。字符'\b'是退格符,通常会将光标向左移动一个位置。
使用这些字符,你可以打印一个完成百分比指示器
for(i = 0; i < lotsa; i++) { printf("\r%3d%%", (int)(100L * i / lotsa)); fflush(stdout); do_timeconsuming_work(); } printf("\ndone.\n");或者一个指挥棒
printf("working: "); for(i = 0; i < lotsa; i++) { printf("%c\b", "|/-\\"[i%4]); fflush(stdout); do_timeconsuming_work(); } printf("done.\n");
另请参见问题 12.4。
参考:ISO 第 5.2.2 节