C 执行程序时显示完成进度
我想在C程序运行时以百分比的形式显示它的进度。程序中的实际工作(其进度应被测量)被限制在一个循环中。以下是我尝试过的:C 执行程序时显示完成进度,c,loops,C,Loops,我想在C程序运行时以百分比的形式显示它的进度。程序中的实际工作(其进度应被测量)被限制在一个循环中。以下是我尝试过的: int i; int to = 100000000; while (i++ < to) { printf("\rPercent done: %d", (100 * i)/to); } inti; 整数到=100000000; while(i++inti=0;取而代之) 您的“进度计数器”将只计算循环中的进度。一旦完成百分比:100将被打印,只有循环将结束 您正
int i;
int to = 100000000;
while (i++ < to) {
printf("\rPercent done: %d", (100 * i)/to);
}
inti;
整数到=100000000;
while(i++
这可能是一个愚蠢的问题,但如何在一段时间内显示进度
程序正在运行吗
不是这样的
您有多个问题:
- 您的
未初始化,因此程序将打印垃圾。(修正:->i
取而代之)inti=0;
- 您的“进度计数器”将只计算循环中的进度。一旦
将被打印,只有循环将结束完成百分比:100
- 您正在向控制台打印1亿行。也许再仔细想想
- 使用
时,您大约在中途遇到整数溢出,因此请改用(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;
}
#包括
内部主(空){
int i=0;
整数到=100000000;
while(i++
请注意,这只会准确反映程序执行循环的程度。循环之前/之后的任何工作都不会通过该方法进行测量
这仅为每个完整百分比打印控制台消息。仍然令人讨厌的是,你收到了100条控制台消息,但远没有打到
printf
的100.000.000(!)电话那么糟糕。尽管如此,这仍然会对性能产生影响。这会非常缓慢,但应该可以工作,当您初始化i时。@KamiKaze,如何创建一个活动的i?它在哪里自我更新?除了你的代码被破坏之外,你不能用纯标准C做你要求的事情。你必须使用给定操作系统的控制台API将控制台光标设置在你喜欢的地方,然后实现多线程。