我想在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)'的倍數來分配。 –