Я пытаюсь разбить строку на токены, но несколько рекурсивно. Я пытаюсь разобрать:
"content=0&website=Google"
, чтобы у меня был способ вынуть параметры и значения. Если я попробую strtok
, я в конечном итоге уничтожу строку, которую хочу разобрать дважды. Итак, я попробовал
char *contents = "content=0&website=Google"
char arg[100];
char value[100];
sscanf(contents, "%s&%s", arg, value);
в качестве первого прохода, надеясь снова проанализировать arg
, но это не удалось, и arg
содержит всю строку. Я попытался использовать "%s\&%s"
, думая, что &
зарезервированное слово, но не повезло.
Помогите!
Редактировать:
Это был мой хак с strtok:
static void readParams(char * string, char * param, char * value) {
printf("This is the string %s\n",string);
char * splitted = strtok (string,"=");
while (splitted != NULL)
{
printf("This is the string %s\n",splitted);
splitted = strtok (NULL, "=");
// Then do some saving to param and value
}
}
char * splitted = strtok (contents,"&");
int counter = 0;
while (splitted != NULL)
{
char * t_str = strdup(splitted);
readParams(t_str, param, value);
splitted = strtok (NULL, "&");
}
но он не работает, потому что strtok
splitted в конце превращается в тарабарщину.