Разбить строку C на токены с помощью sscanf

Я пытаюсь разбить строку на токены, но несколько рекурсивно. Я пытаюсь разобрать:

"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, "&");
}

но он не работает, потому что strtoksplitted в конце превращается в тарабарщину.

6
задан Rio 6 March 2012 в 06:29
поделиться