12:34:56
我已经想出了一种方法,可以将小时,分钟和秒提取到自己的字符串中。
然而,有一个我无法想象的角落
示例:
12::
提取数字并转换为整数后,结果为0.这很好。 但是,我需要两个0来正确表示时间
char *hh = argv[2];
char *mm, *ss;
char *array[3];
char *temp =strchr(argv[2],':');
mm = temp + 1;
/*if(*mm == ':'){
*mm = "00";
}*/
*temp = '\0';
temp = strchr(mm, ':');
ss = temp+1;
*temp = '\0';
如果你看一下注释的if部分,那就是我试图检查下一个指向的值是否是分号。如果是的话,我需要做的只有两个0&#39。
有任何线索如何处理?
答案 0 :(得分:1)
将这些数据提取为整数而不是字符串会好得多。
类似的东西:
bool parse_hms(int *hours, int *minutes, int *seconds, const char *hms)
{
*hours = *minutes = *seconds = 0;
return sscanf(hms, "%d:%d:%d", hours, minutes, seconds) > 0;
}
应该有效。请注意,该函数假定所有三个指针都有效。如果至少解析了其中一个数字,则返回true
。未解析的数字将设置为0(当然也可以作为元素值有效)。