gpt4 book ai didi

c - strptime() 的问题

转载 作者:行者123 更新时间:2023-11-30 17:56:33 25 4
gpt4 key购买 nike

我正在使用函数strptime()将字符串转换为struct tm。但是,当我检查字段时,有一些字段未填写。所以我检查了手册页,但似乎我正在做正确的事情,所以现在我对出了什么问题感到茫然。

示例输入字符串:

Wed, 19 Oct 2005 10:59:00 GMT

strptime函数:

if(strptime(date, "%a, %d %b %Y %T %Z", &time) != NULL)

据我了解,%a 表示星期几,%d 表示月份中的某一天,%b 表示月份,%Y 表示年份,%T 表示 HH:MM: SS 和 %Z 表示 GMT。

tm 结构的输出

year: 32767; month: 866041216; day: 0;
hour: 3; minute: 0; second: 37941328

生成输出的代码:

printf("year: %d; month: %d; day: %d;\n",
time.tm_year, time.tm_mon, time.tm_mday);
printf("hour: %d; minute: %d; second: %d\n",
time.tm_hour, time.tm_min, time.tm_sec);
printf("week day: %d; year day: %d\n", time.tm_wday, time.tm_yday);

任何朝着正确方向的插入都会非常有帮助。谢谢!

最佳答案

在调用 strptime 之前,您必须初始化 time,通常如下所示:

memset(&time, 0, sizeof(struct tm));

引用man page :

In principle, this function does not initialize tm but only stores the values specified. This means that tm should be initialized before the call. Details differ a bit between different UNIX systems. The glibc implementation does not touch those fields which are not explicitly specified, except that it recomputes the tm_wday and tm_yday field if any of the year, month, or day elements changed.

关于c - strptime() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434607/

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