我想在Windows上将时间字符串转换为C中的时间格式。因为我在我的字符串中只有小时,分钟和秒钟,所以试图使用sscanf将时间格式解析为字符串,然后使用mktime。但不知何故,它不会将其转换为时间格式。为了检查,我试图将转换后的时间打印回来。代码如下:使用sscanf将字符串转换为时间
struct tm tm;
char time_buffer[100];
int hh, mm;
float ms;
time_t time_value;
char *timestamp = {"16:11:56.484"};
sscanf(timestamp, "%d:%d:%f", &hh, &mm,&ms);
tm.tm_hour =hh;
tm.tm_min = mm;
tm.tm_sec = ms*1000;
tm.tm_isdst = -1;
time_value = malloc(100*sizeof(char));
time_value = mktime(&tm);
if (time_value==-1)
printf ("unable to make time");
strftime(time_buffer, sizeof(time_buffer), "%c", &tm);
printf(time_buffer);
使用'malloc'进行堆分配的目的是什么?这只会给你一个内存泄漏。 –
我在我的代码中有一个时间戳值的数组,为什么我分配了内存。在这里我没有显示数组来保持简单的代码。 – learningpal
如果你有一个'time_t'值的数组,你应该用'sizeof(time_t)'而不是'sizeof(char)'的倍数来分配。 –