2012-03-06 2 views
1

Я хотел бы вычесть current_time с помощью before_saved_time и проверить, больше ли это, чем wait_time. время ожидания должно быть int. Может ли кто-нибудь дать мне простой пример? Другими словами:Вычитание времени в C

if ((current_time - previously_saved_time) > wait_time) { 
    do something; 
} 
+0

сообщение некоторые выборочные данные – Teja

+0

[время человек] (http://linux.die.net/man/2/time) с [человек] difftime (HTTP: // Linux .die.net/man/3/difftime) может быть разумной отправной точкой. –

ответ

4

Что у вас есть именно то, что вам нужно, кроме замены do something с некоторым фактическим кодом.

Например, эта программа ждет три секунды:

#include <time.h> 

int main(void) { 
    time_t base = time (0); 
    time_t now = base; 
    while (now - base < 3) 
     now = time (0); 
    return 0; 
} 

Это просто перебирает в while заявления, пока разница между базовым временем и текущим временем не три или более (есть почти наверняка лучшие способы подождите N секунд, это просто для иллюстрации расчета).

+0

Спасибо. Именно то, что я искал. –

+0

Обратите внимание, что в стандарте C вы должны использовать 'diffftime()' для вычисления разницы между двумя значениями 'time_t', такими как те, которые возвращаются' time() '. POSIX берет более простой взгляд на жизнь (по крайней мере, w.r.t 'time_t', не будем обсуждать все вспомогательные механизмы синхронизации), и работает прямое вычитание. –

+0

Я использовал эти вычисления, поскольку неясно, что значения _were_ 'time_t' типа. Если они тогда «difftime», вероятно, это путь, потому что кодировка «time_t» на самом деле не обязана стандартом. – paxdiablo