我必须在 C 编程中检查传入时间是否完全采用 hh:mm 格式。
时间将存储在一个字符串中。
如果时间不是hh:mm
格式(示例22:00
或10:34
),则程序应显示错误。
如果时间格式正确,则程序应继续。是否有任何预定义的函数来检查 C 中的时间?
我必须在 C 编程中检查传入时间是否完全采用 hh:mm 格式。
时间将存储在一个字符串中。
如果时间不是hh:mm
格式(示例22:00
或10:34
),则程序应显示错误。
如果时间格式正确,则程序应继续。是否有任何预定义的函数来检查 C 中的时间?
AFAIK,没有进行此检查的标准功能。但是,编写自己的代码很容易,因为您知道
0
和2
0
和5
NUL
终止符您需要强制执行的唯一额外规则是,如果第一个 char 是 a 2
,那么第二个 char 必须在0
and之间3
。
所以函数(如果有效则返回 1,否则返回 0)看起来像这样
int validate( char *str )
{
if ( str[0] < '0' || str[0] > '2' )
return 0;
if ( str[1] < '0' || str[1] > '9' )
return 0;
if ( str[2] != ':' )
return 0;
if ( str[3] < '0' || str[3] > '5' )
return 0;
if ( str[4] < '0' || str[4] > '9' )
return 0;
if ( str[5] != '\0' )
return 0;
if ( str[0] == '2' && str[1] > '3' )
return 0;
return 1;
}
您可以使用 strtok() 来解析该行,然后检查每个标记是否是一段时间内的有效数字。
int hour = atoi(strtok( lineToParse, ":" )) ;
int minute = atoi(strtok( NULL, ":" )) ;
//logic testing here