Как создать таймер с помощью библиотеки time.h? - PullRequest
3 голосов
/ 01 сентября 2010

Это не домашнее задание, это скорее вызов от нашего профессора, но я все же пометил его как один.

Задача состоит в том, чтобы создать игру для набора текста, которая имеет 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 Ответ

2 голосов
/ 01 сентября 2010

Во-первых, вам не нужно для предоставления аргумента time_t* для функции time. Если вы просто собираетесь использовать возвращаемое значение, нормально (и очень часто) вызывать time(NULL). Таким образом, вы можете исключить переменные start и current, если они не используются иным образом.

Во-вторых, возвращаемое значение из time равно time_t, а не int, поэтому timer должно иметь тип time_t.

Наконец, посмотрите на ваш тест

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

и подумайте, что произойдет, если время прошло 40 секунд с момента старта, когда вы выполняли что-то еще выше теста, а теперь, скажем, 43 секунды с момента старта. Ты все еще не хочешь сломаться? Так == подходящий тест?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...