Я относительно новичок в программировании и im, работающем в настоящее время над проектом, который должен быть очень точным, поэтому я попытался написать что-то, чтобы создать метку времени с точностью до миллисекунды. Кажется, что это работает, но мой вопрос - это правильный путь или есть намного более простой способ? Вот мой код:timestamp in c с точностью до миллисекунд
#include<stdio.h>
#include<time.h>
void wait(int milliseconds)
{
clock_t start = clock();
while(1) if(clock() - start >= milliseconds) break;
}
int main()
{
time_t now;
clock_t milli;
int waitMillSec = 2800, seconds, milliseconds = 0;
struct tm * ptm;
now = time(NULL);
ptm = gmtime (&now);
printf("time before: %d:%d:%d:%d\n",ptm->tm_hour,ptm->tm_min,ptm->tm_sec, milliseconds);
/* wait until next full second */
while(now == time(NULL));
milli = clock();
/* DO SOMETHING HERE */
/* for testing wait a user define period */
wait(waitMillSec);
milli = clock() - milli;
/*create timestamp with milliseconds precision */
seconds = milli/CLOCKS_PER_SEC;
milliseconds = milli%CLOCKS_PER_SEC;
now = now + seconds;
ptm = gmtime(&now);
printf("time after: %d:%d:%d:%d\n",ptm->tm_hour,ptm->tm_min,ptm->tm_sec, milliseconds);
return 0;
}
Большое спасибо за ваш быстрый ответ. Я попробую это, когда вернусь к моей рабочей машине. До сих пор я не решался использовать заголовки окон. К сожалению, я должен использовать Windows XP и Visual Studio 6.0, надеюсь, это не проблема. – morten
@morten: Ссылка msdn говорит, что 'GetSystemTime' доступен в Windows 2000 и выше, и я только что проверил, что он работает на моей машине XP Home SP3. Удачи, и расскажите нам, что вы делаете. –
просто хотел сказать спасибо, я только что реализовал вашу идею, и все работает отлично – morten