Konventionen für Formatbezeichner

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu scanf, wscanf

Für die scanf-Formatbezeichner gelten für folgende Konvertierungen bestimmte Konventionen:

Formatbezeichner Konventionen

Einzelnes Zeichen (%c)

Diese Spezifikation liest das nächste Zeichen, einschließlich eines Whitespace-Zeichens.

Verwenden Sie %1s, um ein Whitespace-Zeichen zu überspringen und das nächste Nicht-Whitespace-Zeichen zu lesen.

Zeichen-Array (%[W]c)

[W] = Breitenbezeichner

Das Adressargument ist ein Zeiger auf ein Zeichen-Array (char arg[W]). Das Array besteht aus W Elementen.

String (%s)

Das Adressargument ist ein Zeiger auf ein Zeichen-Array (char arg[]).

Das Array muss mindestens (n+1) Byte groß sein, wobei n die Länge des Strings s (in Zeichen) ist.

Das Eingabefeld wird durch ein Leerzeichen oder ein Zeilenvorschubzeichen beendet.

Ein Null-Begrenzer wird automatisch an den String angehängt und als letztes Element im Array gespeichert.

Gleitkomma (%e, %E, %f, %g und %G)

Gleitkommazahlen im Eingabefeld müssen dem folgenden allgemeinen Format entsprechen:

[+/-] ddddddddd [.] dddd [E|e] [+/-] ddd

[item] gibt an, dass item optional ist, und ddd repräsentiert die Ziffern (dezimal, oktal oder hexadezimal).

Zudem werden +INF, -INF, +NAN und -NAN als Gleitkommazahlen erkannt. Das Vorzeichen (+ oder -) und die Großschreibung sind erforderlich.

Vorzeichenlos (%d, %i, %o, %x, %D, %I, %O, %X, %c, %n)

Ein Zeiger auf vorzeichenlose Zeichen, vorzeichenlose Ganzzahl oder unsigned long kann in jeder Konvertierung verwendet werden, bei der ein Zeiger auf ein Zeichen, auf eine Ganzzahl oder auf long zulässig ist.

Suchmengen (%[...], %[^...])

Die in eckige Klammern eingeschlossene Zeichenmenge kann für Zeichen vom Typ s ersetzt werden.

Das Adressargument ist ein Zeiger auf ein Zeichen-Array (char arg[]).

Diese eckigen Klammern umgeben eine Zeichenmenge, die eine Suchmenge von möglichen Zeichen festlegt, aus der der String (im Eingabefeld) besteht.

Wenn das erste Zeichen in den eckigen Klammern ein Zirkumflex (^) ist, wird die Suchmenge invertiert, d.h. sie enthält dann alle ASCII-Zeichen außer denjenigen in den eckigen Klammern.

(Normalerweise wird ein Zirkumflex in die invertierte Suchmenge einbezogen, außer es ist ausdrücklich in der Suchmenge irgendwo nach dem ersten Zirkumflex angegeben.)

Das Eingabefeld ist ein String, der nicht durch Whitespace begrenzt ist. "...scanf" liest das Eingabefeld bis zum dem ersten Zeichen, das nicht in der Suchmenge (oder in der invertierten Suchmenge) erscheint.

Regeln für Suchmengenbereiche

1. Das Zeichen vor dem Bindestrich (-) muss lexikalisch kleiner als das Zeichen danach sein.

2. Der Bindestrich darf nicht das erste oder das letzte Zeichen in der Menge sein. (Falls der Bindestrich das erste oder das letzte Zeichen ist, wird er einfach als Bindestrichzeichen, nicht als Bereichsbezeichner, behandelt.)

3. Die Zeichen auf beiden Seiten des Bindestrichs müssen das Ende des Bereichs sein und dürfen nicht Teil eines anderen Bereichs sein.

Siehe auch