Split-C-string in-Token mit sscanf

Ich versuche, split einen string in tokens auf, sondern eher rekursiv. Ich bin versucht, zu analysieren:

"content=0&website=Google"

so, ich habe einen Weg, um die Parameter und Werte. Wenn ich versuche strtok ich am Ende zerstören Sie die Zeichenfolge ich möchte analysieren zweimal. Also versuchte ich

char *contents = "content=0&website=Google"
char arg[100];
char value[100];
sscanf(contents, "%s&%s", arg, value);

als der erste Durchgang, in der Hoffnung, zu analysieren arg wieder, aber es schlägt fehl, und arg enthält die gesamte Zeichenfolge. Ich habe versucht, mit "%s\&%s" denken & war ein reserviertes Wort, aber kein Glück gibt.

Hilfe!

Edit:

Dies war meine strtok hack:

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

aber es funktioniert nicht, da zerlegt ' s strtok am Ende wird gobbldygook.

So speichern Sie eine Kopie des Strings, bevor Sie anrufen strtok().
Sie können versuchen strchr().
Benutzer ich meine Wahrnehmung dies ist eine sehr schöne Frage. Neben der Vorhersage von anderen Methoden, es wird besser sein, wenn jemand den Grund dafür, warum das sscanf(Inhalt, "%s&%s", arg, Wert); funktioniert nicht
wie ich schon sagte in meiner Antwort, Fragen scanf zu Scannen %s Ursachen es, der scan bis zum nächsten whitespace-Zeichen. Also es wird nicht aufhören, auf ein kaufmännisches und-Zeichen.

InformationsquelleAutor Rio | 2012-03-06

Schreibe einen Kommentar