我正在尝试将时间字符串转换为C语言Windows平台上的时间格式。由于我的字符串中只有小时、分钟和秒,所以我尝试使用sscanf解析字符串到时间格式,然后使用mktime进行转换。但不知何故它没有转换成时间格式。为了检查,我尝试将转换后的时间再次打印成字符串。代码如下:
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
进行堆内存分配的目的是什么?那只会让你出现内存泄漏。 - Some programmer dudetime_t
值的数组,应该按sizeof(time_t)
的倍数分配内存,而不是sizeof(char)
。 - Some programmer dudesizeof(char)
是多余的,它已经被标准保证是1
。 - user4520