C: gettimeofday()每次运行都会产生相同的值



我试图用ISO-8601打印时间,精度为秒。YYYY-MM-DDThh: mm: ss.s

下面是我的代码:
#include <sys/time.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void milli_time(char* dest, struct timeval* t)
{
    struct tm* timeInfo;
    strftime(dest, 22, "%Y-%m-%dT%t", localtime(&t->tv_sec));
    printf("%sn", dest);
    fflush(stdout);
    char deciTime[3];
    sprintf(deciTime, ".%lu", ((t->tv_usec)/100000ul));
    strcat(dest, deciTime);
}
int main()
{
    struct timeval* theTime;
    char timeString[32];
    gettimeofday(theTime, NULL);
    printf("%lu.%lun", theTime->tv_sec, theTime->tv_usec);
    milli_time(timeString, theTime);
    printf("%sn", timeString);
    fflush(stdout);
}

每次我运行它的输出是:

134520616.3077826840
1974-04-06T17:50:16
1974-04-06T17:50:16.30778

我注意到的另一件事是tv_usec大于一百万

struct timeval* theTime更改为struct timeval theTime,并更新相应的引用:

gettimeofday(&theTime, NULL);
// etc

这样就为结构体分配了空间,而不仅仅是指向结构体的指针。当我试图在我的机器上运行它时,你的代码出现了分段错误。

相关内容

  • 没有找到相关文章

最新更新