C\C++ windows 繞過strptime
strptime()函式功能是實現字串到時間的轉換,在linux下可以正常執行,但在windows中卻無法找到。Google後有篇微軟的博文和StackOverflow都提到了windows中開源的strptime.c檔案,但下載下來試後發現缺少很多標頭檔案,如“namespace.h”等,所以這條路走不通。後來依據任務要求發現可以不用strptime:
1.任務目標:給定各個時間要素得到至今為止的秒數;
2.原始strptime構思:
struct tm tt0;
//時間是2015年第234天16時0分0秒
sprintf(d_time, "%d-%d %d:%d:%d", 2015, 234, 16, 0, 0);//先將時間要素轉成字串
strptime(d_time, "%Y-%j %H:%M:%S", &tt0);//再將字串d_time轉成tm結構的物件
time_t t0 = mktime(&tt0);//最後通過呼叫mktime函式得到time_t結構的秒數
3.繞過strptime實現:
struct tm tt0={0};//!!!特別注意,tt0最好賦初值,否則某些量容易出錯
//直接賦值tt0結構體,以下通過故意賦錯的值實現天數的賦值
//理論上如果賦天數應該是tt0.yday=234就行,但查閱文件後發現該值一般忽略,是由年月日確定後自動算出
//因此網上採取這種方法,將月份賦值為0表示January,當天數tm_mday大於31的時候會自動調整。
//[原文出處](http://stackoverflow.com/questions/9575131/why-is-mktime-changing-the-year-day-of-my-tm-struct)
tt0.tm_sec = 0;
tt0.tm_min = 0;
tt0.tm_hour = 16;
tt0.tm_mday = 234;
tt0.tm_mon = 0;
tt0.tm_year = 2015-1900;//!!!特別注意:必須減1900,否則mktime報錯
time_t t0 = mktime(&tt0);
相關文章
- Windows下cmd/powershell命令混淆繞過Windows
- js繞過-前端加密繞過JS前端加密
- C/C++呼叫Windows DOS命令C++Windows
- Windows Vista系統繞過啟用Windows
- 有用的C/C++的Windows操作C++Windows
- windows 下c++編譯WindowsC++編譯
- Windows10 bypassUAC繞過使用者賬戶控制Windows
- C 語言到 C++ 過度C++
- C++運算子過載C++
- C++函式過載C++函式
- C++ 運算子過載C++
- C++——運算子過載C++
- [C++]運算子過載C++
- C++ lambda的過載C++
- C++ 編譯過程C++編譯
- Windows Sqlserver Automatic Log Audit Via C/C++WindowsSQLServerC++
- C/C++—— C++中函式重寫和函式過載C++函式
- C/C++編譯過程詳解C++編譯
- "undefined reference to strptime"之自己定義strptime函式Undefined函式
- C++之函式過載C++函式
- C++過載底層原理C++
- C++操作符過載C++
- C++的函式過載C++函式
- C++ 操作符過載C++
- Windows 程式設計簡介從C/C++到Windows程式設計Windows程式設計C++
- 使用HTTP頭進行403繞過 速率繞過 Rate Limit BypassHTTPMIT
- 繞過微軟限制,Windows 10 家庭版啟用印表機共享微軟Windows
- 清除Windows 盜版提示資訊,繞過WGA盜版驗證Windows
- C/C++ 透過SQLiteSDK增刪改查C++SQLite
- md5繞過
- Windows 下 c++ 呼叫 Rust 庫的例子WindowsC++Rust
- C++實現tab補全(Windows限定)C++Windows
- windows下C++如何呼叫matlab程式WindowsC++Matlab
- Visual C++ 2015 引入更新的 C++ 特性到 Windows APIC++WindowsAPI
- C++ 函式過載和模板C++函式
- C++運算子過載詳解C++
- C++中運算子的過載C++
- 編譯C++ 程式的過程編譯C++