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

3

这不是一道作业题,而是我们教授提出的一个挑战。但是我仍然将其标记为作业。

问题是创建一个打字游戏,其中包含3个等级,难度相匹配,不同的时间限制(以秒为单位)和分数。现在,我对程序本身没有任何问题,我的问题是如何实现计时器,它应该是操作系统无关的(我认为,因为唯一的提示是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个回答

1
首先,您不需要为time函数提供time_t*参数。如果您只是要使用其返回值,则可以调用time(NULL)(非常常见)。这样,如果它们没有被使用,您可以消除start和current变量。
其次,time函数的返回值是time_t类型,而不是int类型,因此timer应该是time_t类型。
最后,请查看您的测试。
if(time(&current) == (timer+40))

考虑一下,如果在你执行测试之上做其他事情时,时间已经过去了40秒,现在距离开始已经是43秒了,你不还是想要中断吗?所以,==是适当的测试吗?


谢谢您。现在我想我明白了,让我试试。 - arscariosus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接