2015-10-21 50 views
-1

我想在C中驗證用戶輸入的日期。但是,我似乎無法得到strtok用「 - 」分隔符分隔。例如,我想驗證用戶是否以mm/dd/yyyy-hh:mm格式正確輸入了日期,其中hh是小時的2位數字表示形式,mm是2位數小時後的分鐘數。問題使用strtok驗證用戶輸入的日期在C

這就是我一直在做的事情。

char* input[] //--user input 

char* token[];//-- used to seperate each portion and verify them individually. 

token = strtok(input, " /-:"); //-- token is now the mm. 
...todo 

token = strtok(NULL, "/"); //---token is now the dd. 
...todo 

token = strtok(NULL, "/"); //---token is now the yyyy. 
...todo 

我一直在使用prinf令牌的每一步驗證,一切都運行順利,直到我試圖到達......。

這裏的問題:當我嘗試調用

token = strtok(NULL, "-") //for the hours in a valid input 

令牌爲NULL。在待辦事項中,我驗證該令牌不爲空,但在這種情況下,即使輸入有效日期,也總是如此。

+0

'char * input []'是指針數組的聲明(如果添加了分號,那就是),這可能不是您想要的。請發佈真實的代碼。 – wildplasser

+0

是的,謝謝。 –

回答

0

您可以考慮使用

if (sscanf (input, "%d/%d/%d-%d:%d", &mm, &dd, &yyyy, &hr, &m) == 5) 

格式字符串掃描的int值,'/',一個int,一個'/',一個int,一個'-',一個int,一個':',和一個int。如果成功掃描所有項目,返回值爲5.