【问题标题】:How to create a timer that remove a 1 from variable from per seconds如何创建一个从每秒变量中删除 1 的计时器
【发布时间】:2019-04-26 11:20:06
【问题描述】:

我创建了一个以秒/分钟为单位的简单计时器。

我希望它每秒钟都会从一个变量中减去 1(-- 或 -= 1)。您能否就我将如何编程的逻辑给出一些指导。因为我的秒数只在 0-60 之间,我希望倒计时可以无限期地进行,也不依赖于 int p。

我已经有了可以获取当前计算机时钟时间的工作函数,让它调用它

有效的代码(分钟/秒是全局变量。)

    double clock = get_time() - start_time;
    minutes = abs(clock/60);
    seconds = clock - (minutes * 60);

x 是一个全局变量。

int p;
x = p -(seconds);

【问题讨论】:

  • 这一切都取决于您编码的平台。
  • 它只是基本的 C,在 linux 上。
  • 添加延迟对您有帮助吗?如“sleep(1);x -= 1;”在一个循环内。当代码运行所花费的时间被添加到延迟(1 秒)时,它会超过 1 秒,但我不确定从变量中减去 1 是否会花费大量时间。
  • @Bondspencil 平台是指硬件。是 x86(64) 还是其他? Linux 可以在许多设备上运行。
  • 英特尔 CPU(第 7 代)上的 x86。 6 @montonero

标签: c


【解决方案1】:

这是一个小 sn-p,在每次打印之间等待大约 1 秒。

#include <stdio.h>
#include <time.h>

int main() {
    time_t clock = time(NULL);
    int total = 0;
    int interval = 1;
    while (total < 20) {
        time_t cur = time(NULL);
        if (cur - clock > interval) {
            total++;
            printf("one sec passed\n");
            clock = cur;
        }
    }
    return 0;
}

【讨论】:

  • 您可以在每次交互之间实现小睡眠。
  • 当然可以,但是 OP 是什么?
  • 是的,这使用了太多的 CPU,我希望使用 start_time 和 current_time 变量来计算经过的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
相关资源
最近更新 更多