0

タイマー カウンターを使用して、アプリケーションの実行時間を制御しようとしています。が仕事をしていることがわかりtime.hます。

#include <time.h>

#define SIZE 256
void main(){
        time_t curtime,endtime;
        struct tm *loctime, *etime;
        char buffer[SIZE];

        //TIME
        curtime = time(NULL);
        endtime = curtime + 2*60;
        loctime = localtime (&curtime);
        etime = localtime (&endtime);
        strftime (buffer, SIZE, "The time is %S \n", loctime);
        fputs (buffer, stdout);
        strftime (buffer, SIZE, "The time is %S.\n", etime);
        fputs (buffer, stdout);
}

開始時刻と終了時刻が同じになるのはなぜですか。

4

2 に答える 2

2

のマニュアル ページからlocaltime(): 戻り値は、静的に割り当てられた構造体を指します。この構造体は、その後の日付および時刻関数の呼び出しによって上書きされる可能性があります

2 つのオプションがあります。

  1. を最初に呼び出した後localtime()、戻り値を別のローカル変数にコピーし、2 回目に呼び出します。
  2. localtime_r()代わりに使用してください。(優先)

localtime と localtime_rの man ページ。

于 2013-06-20T10:22:28.047 に答える
0

2 つの異なる時間を取得するlocaltime_r代わりに使用する必要があります。localtime

からman localtime:

戻り値は、静的に割り当てられた構造体を指します。この構造体は、その後の日付および時刻関数の呼び出しによって上書きされる可能性があります。localtime_r() 関数は同じことを行いますが、ユーザー提供の構造体にデータを格納します。

于 2013-06-20T10:22:42.470 に答える