0
是否可以確定是否有某個字符串用於前。 2015-10-19
是日期,使用mktime()?我想避免像2015-a2-19
或a015x08-b9
等字符串,我必須避免ifs
或switch
。檢查字符串是否是使用mktime()中的日期c
謝謝。
是否可以確定是否有某個字符串用於前。 2015-10-19
是日期,使用mktime()?我想避免像2015-a2-19
或a015x08-b9
等字符串,我必須避免ifs
或switch
。檢查字符串是否是使用mktime()中的日期c
謝謝。
嘗試掃描字符串轉換爲struct tm
,然後調用上mktime
:
// returns 0 if not a valid date, !=0 otherwise
int isValidDate(const char *s)
{
struct tm t = {};
sscanf(s, "%d-%d-%d", &t.tm_year, &t.tm_month, &t.tm_day);
return ((int)mktime(&t) + 1);
}
mktime
回報-1
如果它不能在time_t
表示,只要加一個它得到一個零。無需檢查sscanf
的返回值,因爲無論如何它將導致mktime
的失敗。
請注意,這隻會告訴您日期在Unix epoch(通常)中是否有效,因此1500-11-11將無效,即使它顯然是有效的日期。
爲什麼你必須避免和切換?你試過什麼了? – Magisch
由於在學校的硬件聲明。不幸的是,我不知道.. –
Stackoverflow不是一項家庭作業服務。您應該自行完成以前的研究,並提供您嘗試過的代碼示例。 – Magisch