我有一个这样的字符串:
"00:00:00 000~00:02:00 0000|~00:01:00 0000;00:01:00 0000~"
,
我想得到像"00:00:00 000"
.
我的想法是首先将字符串拆分为";"
,然后拆分为"|"
,最后拆分为"~"
。
但问题是,如果它为空,我就无法获取它,例如"00:01:00 0000~"
,之后的部分 "~"
,我想获取它并为其设置一个默认值,然后将其存储在其他地方,但代码不起作用。问题是什么?
这是我的代码:
int main(int argc, char *argv[])
{
char *str1, *str2, *str3, *str4, *token, *subtoken, *subt1, *subt2;
char *saveptr1, *saveptr2, *saveptr3;
int j;
for (j = 1, str1 = argv[1]; ; j++, str1 = NULL) {
token = strtok_r(str1, ";", &saveptr1);
if (token == NULL)
break;
printf("%d: %s\n", j, token);
int flag1 = 1;
for (str2 = token; ; str2 = NULL) {
subtoken = strtok_r(str2, "|", &saveptr2);
if (subtoken == NULL)
break;
printf(" %d: --> %s\n", flag1++, subtoken);
int flag2 = 1;
for(str3 = subtoken; ; str3 = NULL) {
subt1 = strtok_r(str3, "~", &saveptr3);
if(subt1 == NULL) {
break;
}
printf(" %d: --> %s\n",flag2++, subt1);
}
}
}
exit(EXIT_SUCCESS);
} /* main */