私はこのような文字列を持っています:
"00:00:00 000~00:02:00 0000|~00:01:00 0000;00:01:00 0000~"
、
のようなアイテムをそれぞれ取得したい"00:00:00 000"
。
私の考えでは、最初に文字列を";"
で分割し、次に で分割し"|"
、最後に で分割し"~"
ます。
しかし、問題は、のよう"00:01:00 0000~"
に nullの場合は取得できないことです"~"
。取得してデフォルト値を設定し、別の場所に保存したいのですが、コードが機能しません。何が問題ですか?
これが私のコードです:
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 */