gpt4 book ai didi

C 获取循环中的开始时间和结束时间

转载 作者:行者123 更新时间:2023-11-30 14:23:00 24 4
gpt4 key购买 nike

我正在尝试迭代多个结构,每个结构都包含一个 timeval 结构。我希望能够获取第一个日期并将其存储在 START_DATE 全局变量中。我还想保存最后一个迭代结构的日期。我通过将每次迭代的时间保存在 END_DATE char* 中来实现此目的。

我遇到的问题是,即使 START_DATE = asctime(localtime(&curSec));仅被调用一次,循环的每次迭代都会覆盖 START_TIME。

这里的要点有问题有人可以指出吗?无意双关。

//Global
char *START_DATE = NULL;
char *END_DATE = NULL;

int main(int argc, char *argv[]) {

//start while loop that gets a new header struct each loop
time_t curSec = (time_t)header->ts.tv_sec;
if (!START_DATE)
START_DATE = asctime(localtime(&curSec));
END_DATE = asctime(localtime(&curSec));
//end while loop

printf("Start Date: %s", START_DATE);
printf("End Date: %s", END_DATE);
}

最佳答案

参见asctime reference :

The array which holds this string is statically allocated and shared by both the ctime and asctime functions. Each time either one of these functions is called the content of this array is overwritten.

asctime 始终返回相同的指针,该指针指向其保存的内部缓冲区,因此 START_DATEEND_DATE 始终指向相同的指针东西。

因此,每次调用该函数时,START_DATEEND_DATE 所指向的字符串都会发生更改。

要获取不被覆盖的字符串副本,您需要分配自己的缓冲区并使用 strncpy(或 strcpy,如果您决定)复制它使用 malloc(strlen(START_DATE) + 1) 而不是 char buf[1024] 或类似的)。

关于C 获取循环中的开始时间和结束时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13297592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com