1

秒の小数部分を含むシステム時間を取得したい。標準c(ANSI C)で可能ですか?そうでない場合は、それを可能にするために、ウィンドウOS用のライブラリをいくつか教えてください。Linuxでは、次のコードが問題なく機能します。

 #include <sys/time.h>                                                                
 #include <time.h>                                                                    
 #include <stdlib.h>                                                                  
 #include <stdio.h>                                                                  

 int main(void)                                                                       
 {                                                                                    
   char buffer[30];                                                                   
   struct timeval tv;                                                                 

   time_t curtime;                                                                    



   gettimeofday(&tv, NULL);                                                           
   curtime=tv.tv_sec;                                                                 

   strftime(buffer,30,"%m-%d-%Y  %T.",localtime(&curtime));                           
   printf("%s%ld\n",buffer,tv.tv_usec);                                               

   return 0;                                                                          


   } 

出力は

2009年12月25日11:09:18.35443541

親切に私を助けてください、それはウィンドウOSのためにどのように可能ですか。ANSICで許可されていない場合。

4

3 に答える 3

1

標準Cは、1秒未満の分解能タイミングを提供しません。

POSIXは、1秒未満の解像度のタイミングを提供します。実際、それを行うためのさまざまな方法がgettimeofday()あります。

于 2009-12-25T02:40:10.240 に答える
1

このような:

#include <wtypes.h>
int main()
{
    SYSTEMTIME t;
    GetSystemTime(&t);
    int year = t.wYear;
    int month = t.wMonth;
    int day = t.wDay;
    int hour = t.wHour;
    int minute = t.wMinute;
    int second = t.wSecond;
    int second_fraction = t.wMilliseconds;
   return 0;
}

あなたにとって重要な場合のパフォーマンスに関するいくつかのポイント:

1)gettimeofday()非常に高速で、少数のスレッドで使用してもパフォーマンスが低下することはありません

2) 中localtime()に呼び出しがありますpthread_mutex_lock()(おそらく昼間のようなシステム設定が必要なためです)。そのため、マルチスレッド アプリケーションで広範囲に使用すると、パフォーマンスの問題が発生する可能性があります

于 2009-12-24T07:31:57.750 に答える