Софтуерно Инженерство
Loading...
+ Нов въпрос
denka avatar denka 52 Точки

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.

Някой може ли да помогне?

 

Тагове:
0
Linux Курсове 31/01/2016 17:18:32
snaksa avatar snaksa 3 Точки

Ако искаш да засечеш времето между дадено събитие може да използваш clock(); Това ти връща текущото време. Засичаш го веднъж в началото, после в края и вадиш получените стойности.

EDIT: Извинявай, clock() ти връща времето от стартиране на програмата, а не текущия час.

#include<stdio.h>   
#include<time.h>

int main()
{
	clock_t start, end;

	start = clock();

	for (int i = 0; i < 10000000; i++)
	{
		int a = i;
	}

	end = clock();

	float diff = ((float)(end - start));
	printf("%f", diff);

	return 0;
}

 

0
31/01/2016 18:10:50
denka avatar denka 52 Точки

clock() връща броя тактове на процесора от началото на програмата до сега. Ако искам да вържа към секунди трябва да деля на CLOCKS_PER_SECOND.

1. Това забелязвам, че не работи много точно, тоест, ако ми каже, че са минали 10 секунди, реално са изминали 6(поне за моята машина). Видях и из гугъл, че наистина, ако гоним точно време не може да се разчита на това и препоръчват да се ползва time(NULL).

2. Първоначалния ми въпрос беше за милисекунди. Тоест ако искам да направя проверка - по - прецизна от секунда. (Примерно ми трябват точно 1.6 секунди).

 

0
snaksa avatar snaksa 3 Точки

Ясно, извинявай, не съм разбрал.

1
denka avatar denka 52 Точки

По - скоро аз трябваше да си обясня по - добре въпроса - ако бях написала това от втория коментар в първия .... 

Зарових се в тия неща покрай втора задача от домашното. Понеже в единия пример числото беше с плаващата запетая (1.8 seconds). И понеже в java за всякакви неща свързани с време ползвам функция, която връща милисекунди се замислих за еквивалент в С.

0