从表单的用户那里获取输入后,我必须找出输入的小时和分钟:
( Number1 : Number2 )
例如:(12:21)
我应该报告 12 小时 21 分钟,然后再次等待输入。如果给定格式不匹配,我应该将其报告为无效输入。我写了这段代码:
#include<stdio.h>
int main()
{
int hourInput=0,minutesInput=0;
char *buffer = NULL;
size_t size;
do
{
puts("\nEnter current time : ");
getline ( &buffer, &size, stdin );
if ( 2 == sscanf( buffer, "%d:%d", &hourInput, &minutesInput ) && hourInput >= 0 && hourInput <= 24 && minutesInput >=0 && minutesInput <= 60 )
{
printf("Time is : %d Hours %d Minutes", hourInput, minutesInput );
}
else
{
puts("\nInvalid Input");
}
}
while ( buffer!=NULL && buffer[0] != '\n' );
return 0;
}
问:如果有人在数字 和 之间给出空格:
,我的程序将其视为无效输入,而我应将其视为有效输入。
有人可以解释为什么会发生这种情况以及摆脱这个问题的任何想法吗?据我了解, sscanf 应该忽略所有空格吗?