我正在尝试根据时间创建循环函数。在迭代之后,它将每60秒打印一次“60秒通过”。但这个代码导致我在“60秒通过”的几个,而实际上我看表示甚至还没有显示1分钟.. 我在下面试过,但是我希望它能告诉我这些信息,但它不会(只有前几行迭代。之后不会......)
任何人都可以帮忙解决这个问题吗?谢谢
#include <stdio.h>
#include <time.h>
int main()
{
time_t start,stop;
start = time(NULL);
time(&start);
int iteration, i;
for (iteration = 1; iteration <= 500; iteration++) {
for (i = 0; i <= 50; i++) {
printf("looping while waiting 60 second..\n");
}
stop = time(NULL);
int diff = difftime(start, stop);
if (diff % 60 == 0) {
printf("60 second passed..");}
}
return 1;
}
答案 0 :(得分:2)
difftime
以下代码很可能在一秒钟之前被执行多次。结果,difftime
将返回一个值&lt; 1,由隐式强制转换截断为0。当然还有0 % 60 == 0
。
编辑:
您可能会考虑以下内容:
start = time(NULL);
for(; /* some condition that takes forever to meet */;) {
// do stuff that apparently takes forever.
stop = time(NULL);
double diff = difftime(stop, start);
if (diff >= 60) {
printf("60 seconds passed...");
start = time(NULL);
}
}
另请注意,在您的示例代码中,start
和stop
应在调用difftime
时翻转。
答案 1 :(得分:2)
difftime很可能等于0.如果你想等待60秒,你应该考虑使用函数:
usleep
sleep