如何使用time.h库创建计时器?

时间:2010-09-01 17:12:43

标签: c

这不是作业,它更像是我们教授的挑战,但我会将它标记为一个。

问题是创建一个打字游戏,其中包含3个难度匹配,不同时间限制(以秒为单位)和分数的等级。现在我对程序本身没有任何问题,我遇到的问题是实现定时器,它应该是OS独立的(我假设,因为唯一的提示是它的time.h)。我所做的是错的,因为它只是粗略猜测我读到的关于time.h的内容,它也是丑陋的代码:

time_t start;
int timer = time(&start);
...
time_t current;
for(ctr=0;ctr<10;ctr++)
{
    ...
    if(time(&current) == (timer+40))
      {    
           break;
      }
    ...
}

有时工作,但大部分时间不工作,因为它只是一个粗略的猜测。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

首先,您不需要 time_t*函数提供time参数。如果你只是要使用它的返回值,那么调用time(NULL)就好了(也很常见)。这样,如果没有使用startcurrent变量,则可以将其删除。

其次,time的返回值为time_t,而不是int,因此timer的类型应为time_t

最后,看看你的测试

if(time(&current) == (timer+40))

并考虑一下如果从你开始做的其他事情开始以来经过40秒的时间会发生什么,现在,比如,从开始以来的43秒。你还不想休息吗?那么==是否适当的测试?