我對c編程相對比較陌生,並且即時工作的項目需要非常準確的時間,因此我試着編寫一些東西來創建毫秒精度的時間戳。這似乎工作,但我的問題是這樣,是正確的方式還是有一個更簡單的方法?這裏是我的代碼: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標頭。不幸的是,我不得不使用Windows XP和Visual Studio 6.0,希望這不會是一個問題。 – morten
@morten:msdn鏈接表示'GetSystemTime'在Windows 2000及更高版本上可用,並且我剛剛證實它似乎可以在我的XP Home SP3機器上運行。祝你好運,並告訴我們你最終做了什麼。 –
只是想說,謝謝你,我剛剛實施你的想法,一切工作正常 – morten