- 论坛徽章:
- 0
|
一个函数,将特定格式的日期、时间或日期时间串,转成系统的时间,及time_t的秒数。
程序运行偶尔报错,用valgrind查看,就这个函数报2类错误,即:
Conditional jump or move depends on uninitialised value(s)
Use of uninitialised value of size 8
附函数源码,望高手指点
int DStr2Time_t(char *strdate, int dtype, time_t *tt)
{
struct tm tm={0};
int year,mon,day;
switch(dtype) {
case 1: //Date
sscanf(strdate, "%d-%d-%d", &year,&mon,&day);
tm.tm_year = year-1900;
tm.tm_mon = mon-1;
tm.tm_mday = day;
break;
case 2: //Time
sscanf(strdate, "%d:%d:%d", &tm.tm_hour,&tm.tm_min,&tm.tm_sec);
break;
case 3: //Datetime
default:
sscanf(strdate, "%d-%d-%d %d:%d:%d", &tm.tm_year,&tm.tm_mon,&tm.tm_mday,&tm.tm_hour,&tm.tm_min,&tm.tm_sec);
tm.tm_year -= 1900;
tm.tm_mon -= 1;
tm.tm_isdst = -1;
break;
}
*tt = mktime(&tm);
return (int)(*tt);
}
|
|