0

私はSOからこの答えを得ました:

https://stackoverflow.com/a/2409054/997112

timeval 構造体をわかりやすい形式で出力できるようにします。コンパイラの警告が表示されたため、次"%s.%06d"のように変更する必要がありました。"%s.%06ld"

void printTimeval(struct timeval& tv){

    time_t nowtime;
    struct tm *nowtm;
    char tmbuf[64], buf[64];

    nowtime = tv.tv_sec;
    nowtm = localtime(&nowtime);

    strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
    snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
}

ただし、有効な時間を過ぎると何も印刷されません。

関数を呼び出す前に、渡した timeval の秒数を確認したところ、1404120855 が返されたので、timeval が正しく、問題は関数にあると確信していますか?

4

1 に答える 1

1

文字snprintf()列をフォーマットするだけです。で結果の文字列を実際に出力することはありませんbuf。次のようなものを追加します。

printf("%s\n", buf);

また

puts(buf);

また、 typedef の型が であるかわからlongないため、そのtv_usecフィールドにキャストする必要があります。long

于 2014-06-30T10:16:07.857 に答える