...
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <time.h> int validate_tm(struct tm * time) { /* * The range of valid values of the tm_sec member is [0, 60] * inclusive (to allow for leap seconds). */ if (time->tm_sec < 0 || time->tm_sec > 60) return 0; if (time->tm_min < 0 || time->tm_min >= 60) return 0; if (time->tm_hour < 0 || time->tm_hour >= 24) return 0; if (time->tm_mday <= 0 || time->tm_mday > 31) return 0; if (time->tm_mon < 0 || time->tm_mon >= 12) return 0; /* Other years are legit but may overflow asctime()'s buffer */ if (time->tm_year < -999 || time->tm_year > 9999) return 0; if (time->tm_wday < 0 || time->tm_wday >= 7) return 0; if (time->tm_yday < 0 || time->tm_yday >= 366) return 0; return 1; } void func(struct tm *time_tm) { if (!validate_tm(time_tm)) { /* Handle error */ } char *time = asctime(time_tm); } |
...