使用strtok在C中验证用户输入的日期

时间:2015-10-21 18:30:07

标签: c validation token tokenize delimiter

我正在尝试用C验证用户输入的日期。但是,我似乎无法通过" - "分隔符。例如,我想验证用户是否以mm / dd / yyyy-hh:mm格式正确输入了日期,其中hh是小时的2位数表示,mm是小时数的分钟,也是2位数。 / p>

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

 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令牌进行验证,一切顺利进行,直到我试着去......。

HERE'问题:当我试着打电话时

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

令牌为NULL。在todo中,我验证令牌不是null,但在这种情况下,即使我输入有效日期也是如此。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用

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

格式字符串扫描int,'/',int,'/',int,'-',int,':'和int 。如果成功扫描所有项目,则返回5。