Current time in miliseconds in C
Поразрових из google, но като цяло единственото смислено, което намерих е:
struct timeb tmb;<br>
time_t t = tmb.millitm + tmb.time * 1000;
sleep(10);
time_t c = tmb.millitm + tmb.time * 1000;
printf("a %lld\n", c);
printf("b %lld", t);
Изхода обаче е:
a 4195985296
b 4195985296
Toест, до момента не намирам начин да работя с милисекунди в C.
Някой може ли да помогне?
clock() връща броя тактове на процесора от началото на програмата до сега. Ако искам да вържа към секунди трябва да деля на CLOCKS_PER_SECOND.
1. Това забелязвам, че не работи много точно, тоест, ако ми каже, че са минали 10 секунди, реално са изминали 6(поне за моята машина). Видях и из гугъл, че наистина, ако гоним точно време не може да се разчита на това и препоръчват да се ползва time(NULL).
2. Първоначалния ми въпрос беше за милисекунди. Тоест ако искам да направя проверка - по - прецизна от секунда. (Примерно ми трябват точно 1.6 секунди).
Ясно, извинявай, не съм разбрал.
По - скоро аз трябваше да си обясня по - добре въпроса - ако бях написала това от втория коментар в първия ....
Зарових се в тия неща покрай втора задача от домашното. Понеже в единия пример числото беше с плаващата запетая (1.8 seconds). И понеже в java за всякакви неща свързани с време ползвам функция, която връща милисекунди се замислих за еквивалент в С.
Това изписква в микросекунди
gettimeofday(&tv1, NULL);
/* stuff to do! */
gettimeofday(&tv2, NULL);
(double) (tv2.tv_usec - tv1.tv_usec) / 1000000 +
(double) (tv2.tv_sec - tv1.tv_sec));
Това е за микросекунди