使用 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
令牌为空。在待办事项中,我验证令牌不为空,但在这种情况下,即使我输入有效日期,它也始终为空。
您可以考虑使用
if ( sscanf ( input, "%d/%d/%d-%d:%d", &mm, &dd, &yyyy, &hr, &m) == 5)
格式字符串扫描一个int,一个'/'
,一个int,一个'/'
,一个int,一个'-'
,一个int,一个':'
,以及一个整数。如果成功扫描所有项目,则 return 为 5.
我正在尝试在 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
令牌为空。在待办事项中,我验证令牌不为空,但在这种情况下,即使我输入有效日期,它也始终为空。
您可以考虑使用
if ( sscanf ( input, "%d/%d/%d-%d:%d", &mm, &dd, &yyyy, &hr, &m) == 5)
格式字符串扫描一个int,一个'/'
,一个int,一个'/'
,一个int,一个'-'
,一个int,一个':'
,以及一个整数。如果成功扫描所有项目,则 return 为 5.