日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c语言mktime函数遇到的一些坑

發布時間:2024/3/26 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言mktime函数遇到的一些坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前在調mktime函數,當轉換時間時遇到多次調用該函數時小時數會出錯,本來賦值的是一個數值,但是調用該函數以后數值被更改(小時數加一),出錯的函數調用可表示為:

struct tm stm;
time_t t;

sscanf(date,"%d/%d/%d %d:%d:%d", &stm.tm_year,&stm.tm_mon,&stm.tm_mday,
?? ??? ??? ?&stm.tm_hour,&stm.tm_min,&stm.tm_sec);
stm.tm_year ? -= ?1900;?
stm.tm_mon ? ?-= ?1;
t = mktime(&stm);?

其中data為輸入字符串,包含相對于的時間格式,多次調用該函數時stm.tm_hour會加一,試了很多,排除其余代碼內存改寫問題,看網上很多mktime輸入參數都是用指針方式做了以下測試代碼后不會出現問題:

struct tm stm;
time_t t;

?time(&t);
?stm = localtime(&t);?
?sscanf(date,"%d/%d/%d %d:%d:%d", &(stm->tm_year),&(stm->tm_mon),&(stm->tm_mday),
?? ??? ??? ?&(stm->tm_hour),&(stm->tm_min),&(stm->tm_sec));
?stm->tm_year ? -= ?1900;?
?stm->tm_mon ? ?-= ?1;
?t = mktime(stm);?

初步懷疑mktime在函數內部對struct tm有內存申請操作,如果用戶傳入了已經申請好的內存會出錯,當然這好像不怎么符合正常的編碼習慣,做個記錄吧

總結

以上是生活随笔為你收集整理的c语言mktime函数遇到的一些坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。