繁体   English   中英

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

[英]Issue using strtok to validate a user-entered date in C

我试图在 C 中验证用户输入的日期。但是,我似乎无法让 strtok 由“-”分隔符分隔。 例如,我想验证用户是否以 mm/dd/yyyy-hh:mm 格式正确输入了日期,其中 hh 是小时的 2 位数字表示,而 mm 也是 2 位数字小时后的分钟数。

这就是我一直在做的。

 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 令牌进行验证,一切都运行顺利,直到我尝试到达 hh。

这是问题:当我尝试打电话时

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

令牌为 NULL。 在 todo 中,我验证令牌不为空,但在这种情况下,即使我输入有效日期,它也始终为空。

你可以考虑使用

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM