0

我必须在 C 编程中检查传入时间是否完全采用 hh:mm 格式。

时间将存储在一个字符串中。
如果时间不是hh:mm格式(示例22:0010:34),则程序应显示错误。
如果时间格式正确,则程序应继续。是否有任何预定义的函数来检查 C 中的时间?

4

2 回答 2

0

AFAIK,没有进行此检查的标准功能。但是,编写自己的代码很容易,因为您知道

  • 索引 0 处的字符必须介于02
  • 索引 1 处的字符可以是任何数字
  • 索引 2 处的字符必须是冒号
  • 索引 3 处的字符必须介于05
  • 索引 4 处的字符可以是任何数字
  • 索引 5 处的字符必须是NUL终止符

您需要强制执行的唯一额外规则是,如果第一个 char 是 a 2,那么第二个 char 必须在0and之间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;
}
于 2015-07-20T08:37:12.187 回答
-2

您可以使用 strtok() 来解析该行,然后检查每个标记是否是一段时间内的有效数字。

int hour = atoi(strtok( lineToParse, ":" )) ;

int minute = atoi(strtok( NULL, ":" )) ;

//logic testing here
于 2015-07-20T08:05:37.153 回答