我希望在C程序运行时以百分比显示它的进度。应该测量进度的程序中的实际工作被限制在一个循环中。这是我试过的:
int i;
int to = 100000000;
while (i++ < to) {
printf("\rPercent done: %d", (100 * i)/to);
}
答案 0 :(得分:7)
可能是一个愚蠢的问题,但是如何显示进展 程序正在运行?
不喜欢这个。
您有多个问题:
i
未初始化,因此该程序将打印垃圾。 (修复: - &gt; 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;
}
请注意,这只会准确反映程序执行循环的程度。循环之前/之后的任何工作都不会被测量。
这仅为每个完整百分比打印一个控制台消息。仍然令人讨厌的是你获得了100条控制台消息,但远不及100.000.000(!)调用printf
那么糟糕。尽管如此,这仍然会影响性能。