gpt4 book ai didi

c - localtime() - 段错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:50 27 4
gpt4 key购买 nike

我有这段代码可以从“29-02-2016”之类的日期返回星期几,但有时它会给我本地时间 (&t) 中的段错误。

int obterDiaSemana(char *str) {
struct tm tm2;
if(strptime(str, "%d-%m-%Y", &tm2) != NULL) {
time_t t = mktime(&tm2);
return localtime(&t)->tm_wday; //Sunday=0, Monday=1, etc.
}
return -1;
}

函数接收:

 char userDate[10]="29-02-2016";

我一直在寻找解决方案,但无法解决这个问题。

提前致谢。

如果您需要一些其他信息,请告诉我。

最佳答案

您没有初始化 struct tm tm2。传递给strptime时,只有格式字符串"%d-%m-%Y"中指定的成员被设置值,其他保持不变,在本例中未初始化,因此它们的值是不定。

将部分初始化的结构 tm2 传递给 mktime() 将导致未定义的行为。

您需要使用一些值(最好是零)来初始化结构。


数组 userDate 太小,无法包含 "29-02-2016"

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

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