2012-04-10 7 views
1

Ich habe eine Zeichenfolge, die etwas wie "asdf + lghd + ewre + fdsf + ..." ist, die unterschiedliche Länge hat. Von diesem habe ich auch eine Vorlage für die Verwendung mit der sscanf-Funktion, die "% s +% s +% s + ..." ähnelt. Da beide unterschiedlich lang sind, ist es möglich, die zusätzlichen Argumente in sscanf zu ersetzen, in denen die Werte mit einem dynamischen String-Array gespeichert werden sollen. Zum Beispiel:Möglich, sscanf Argumente mit Array zu ersetzen

char *test = "adfe + asdf + fghe + jklo"; 
char *template = "%s + %s + %s + %s"; 
char destination[4][4]; 
sscanf(test, template, destination); 

Von einem sofortigen Blick scheint dies nicht zu funktionieren, gibt es also eine alternative Methode, dies zu tun?

Antwort

0

sscanf() dies nicht unterstützt, aber Sie können Ihre eigene Version von scanf schreiben.

Ich habe dies bereits in C# gemacht und veröffentlichte den Code here. Vielleicht gibt mein Code Ihnen einige Ideen zum Schreiben einer benutzerdefinierten Version in C.

0

Was Sie versuchen zu tun ist nicht möglich, mit sscanf. Sie müssen es durchlaufen.

0

No. sscanf, wie alle Funktionen xxxxxf in 'C' Arbeit von einer variaable Anzahl von aruments in der Argumentliste aufweist. Wenn Sie nach 4 Strings (4% s) suchen, erwartet die Funktion 4 Argumente, die Zeichenarrays sind. In Ihrem Beispiel stellen Sie ein einzelnes Argument bereit, bei dem es sich um ein Array von 4-Zeichen-Arrays handelt.

Eine Möglichkeit, die funktioniert, wäre, dass Sie die Eingabe mit dem von Ihnen verwendeten Trennzeichen analysieren. Sehen Sie sich die Funktionen substr und pos an, um Hinweise dazu zu erhalten.