【发布时间】:2014-02-27 12:46:36
【问题描述】:
我需要找到给定日期的工作日;我有以下代码但不起作用
int day;
char *str ="25/02/2014";
struct tm tm;
if (strptime(str, "%d/%m/%Y", &tm) != NULL)
{
time_t t = mktime(&tm);
day = localtime(&t)->tm_wday;
return day;
}
我在这里做错了什么?
【问题讨论】:
-
这可以编译吗?除非您将
struct tm *tm;替换为struct tm tm; -
即使在改变 struct tm tm 之后; weekday 的结果不好。day 的结果总是 4 ("27/02/2014")
-
我用
struct tm * tm;重新运行了这个,但从每个&tm中删除了&,我得到了结果:2014 年 2 月 27 日有 4 个,2014 年 2 月 25 日有 2 个. -
如果你使用
struct tm *tm并且你没有初始化为NULL然后tm指向一些无效的地址并且当你传递给strptime的那个无效内存位置的地址时用数据填充该内存。在这种情况下,行为将是未定义的。