使用difftime for loop参数

时间:2012-04-04 16:53:49

标签: c

我正在尝试根据时间创建循环函数。在迭代之后,它将每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;
}

2 个答案:

答案 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);
    }
}

另请注意,在您的示例代码中,startstop应在调用difftime时翻转。

答案 1 :(得分:2)

difftime很可能等于0.如果你想等待60秒,你应该考虑使用函数:

    Linux上的
  • usleep
  • Windows上的
  • sleep