日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/3/26 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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函数遇到的一些坑的全部內容,希望文章能夠幫你解決所遇到的問題。

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