Lpc Manpages

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)