| SYNOPSIS |
| int sscanf(string str, string fmt, mixed var1, mixed var2, ...) |
| |
| BESCHREIBUNG |
| Wertet einen String <str> unter Beruecksichtigung des Formats |
| <fmt>. <fmt> kann Strings beinhalten, die durch %d und %s getrennt |
| werden. Jedes %d und %s entspricht einer der Variablen <var1>, |
| <var2> etc. |
| |
| Die Operatoren im Format-String <fmt> haben eines der folgenden |
| Formate: |
| |
| %[+][!|~][<size>[.<minmatch>]]<type> |
| |
| <type> kann folgendes sein: |
| d: meldet eine Zahl |
| D: meldet eine Zahl |
| U: |
| s: meldet eine Zeichenkette |
| %: meldet das %-Zeichen |
| t: meldet Whitespaces (also Leerschlaege und Tabulatoren), |
| speichert diese aber nicht. |
| |
| <size> ist die erwartete Feldgroesse, <minmatch> die verlangte |
| minimale Laenge fuer einen Treffer (Standardwerte sind 0 fuer |
| Strings und 1 fuer Nummern). Sowohl <size> als auch <minmatch> kann |
| entweder numerisch oder mit '*' angegeben werden - im zweiten Fall |
| wird die gueltige Variable in der Liste der Argumente benutzt. |
| |
| Wird + angegeben, muessen die Zeichen nach dem Feld ebenfalls |
| matchen. Ist dies nicht der Fall, wird das Feld als Misserfolg |
| betrachted (auch wenn der Wert bereits an die zugehoerige Variable |
| zugewiesen wurde). |
| |
| Wird ! angegeben, wird zwar die Suche durchgefuehrt, aber Treffer |
| werden weder gespeichert noch gezaehlt. Mit ~ als Argument wird |
| zwar die Suche durchgefuehrt und die Treffer gezaehlt, das Resultat |
| wird aber nicht gespeichert. |
| |
| Wenn %s nicht am Ende von <fmt> steht, wird nur ein Treffer |
| registriert, wenn auch der nachfolgende String bzw. das |
| nachfolgende Format gefunden wird. Weiter unten gibt es dazu |
| ein Beispiel. |
| |
| Der Unterschied zwischen %d und %D %U ist, dass letzteres ein |
| unmittelbar vorausgehendes %s so bald als moeglich abbricht, |
| waehrend ersteres zuerst versucht, einen moeglichst grossen Treffer |
| fuer %s zu erzielen. Trotzdem ueberspringt %D/%U keine Whitespaces, |
| dazu muss %.0t%D gesetzt werden. |
| |
| Zurueck gegeben wird die Anzahl Treffer. |
| |
| Die Funktion sscanf() ist insofern ein Spezialfall, als dass |
| Argumente automatisch nach Referenz uebergeben werden. |
| |
| BEISPIELE |
| string who, what; |
| if (sscanf("wirf frisbee zu rex", |
| "wirf %s zu %s", what, who) != 2) |
| write("Usage: Wirf <what> zu <who>\n"); |
| else |
| write("Du wirfst einen "+what+" zu "+who+" um auf dich " |
| "aufmerksam zu machen.\n"); |
| |
| sscanf("ab", "%s%s", who, what) |
| ==> liefert 2, who = "", what = "ab" |
| |
| sscanf("ab", "%s %s", who, what) |
| ==> liefert 0, who = 0, what = 0 |
| |
| sscanf("ab ", "%s %s", who, what) |
| ==> liefert 2, who = "ab", what = "" |
| |
| GESCHICHTE |
| LDMud 3.3.713/3.2.13 fuehrte den '+'-Modifizierer ein. |
| |
| SIEHE AUCH |
| explode(E), regexp(E) |