clock()
всегда увеличивается.
Единица измерения часов - CLOCKS_PER_SEC
. Одна секунда имеет CLOCKS_PER_SEC
тактов.
Обратите внимание, что clock()
не измеряет реальное время. clock()
измеряет время, затрачиваемое процессором на ваш процесс. Если вы хотите измерять в реальном времени, используйте time()
из time.h
(или проверьте свою ОС, на linux вы можете использовать clock_gettime(CLOCK_MONOTONIC, ...)
или CLOCK_REALTIME
).
Сохраните текущие часы в Переменная. Затем сравните переменную с текущими часами.
Обычно stdout
буферизуется по строке. Итак, пока вы не напишите символ новой строки, ничего не будет отображаться. Обязательно выполните грипп sh stdout
, если вы зависите от этого поведения.
#include <stdio.h>
#include <time.h>
int main() {
unsigned int sec = 0;
// we will stop the clock one second from now
clock_t stopclock = clock() + 1 * CLOCKS_PER_SEC;
while(1) {
// current time is greater then the stopping time
if (clock() > stopclock) {
// increment stopping time by one second
stopclock += 1 * CLOCKS_PER_SEC;
printf("\r%u seconds has passed", sec);
fflush(stdout);
sec++;
}
}
return 0;
}
Примечание: вычисления по типу clock_t
, например, clock() + 1 * CLOCKS_PER_SEC
, потенциально могут переполняться - отличный код справится с такими угловыми случаями.