gpt4 book ai didi

c - 使用 difftime for 循环参数

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:55 24 4
gpt4 key购买 nike

我正在尝试创建一个基于时间的循环函数。迭代后,它将每 60 秒打印一次“60 秒过去”。但是这段代码导致我出现了几个“60 秒过去了”,而实际上我的 watch 甚至没有显示 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;
}

最佳答案

difftime 和以下代码可能甚至在一秒钟过去之前就被执行了多次。结果,difftime 将返回一个 < 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 的调用中翻转。

关于c - 使用 difftime for 循环参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10015784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com