我希望在C程序运行时以百分比显示它的进度.应该测量进度的程序中的实际工作被限制在一个循环中.这是我尝试过的:
int i;
int to = 100000000;
while (i++ < to) {
printf("\rPercent done: %d", (100 * i)/to);
}
Run Code Online (Sandbox Code Playgroud)
可能是一个愚蠢的问题,但是如何在程序运行时显示进度?
不是这样的.
你有几个问题:
i
是未初始化的,所以该程序将打印垃圾.(修复: - > int i = 0;
代替)Percent done: 100
打印出来,只有循环结束.(i*100)/to
你在整个过程中遇到整数溢出,所以请i / (to / 100)
改用.请注意,编译器可以根据编译器自行优化.一点点令人讨厌的方式是:
#include <stdio.h>
int main (void) {
int i = 0;
int to = 100000000;
while (i++ < to) {
if (i % 1000000 == 0) {
printf("\rPercent done: %d", i / (to / 100));
}
dostuff();
}
printf("\rLoop finished");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,这只会准确反映程序执行循环的程度.循环之前/之后的任何工作都不会被测量.
这仅为每个完整百分比打印控制台消息.仍然令人讨厌的是你得到了100条控制台消息,但远不及100.000.000(!)调用那么糟糕printf
.尽管如此,这仍然是对性能的影响.
归档时间: |
|
查看次数: |
121 次 |
最近记录: |