Formatbezeichner in C/C++

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu C++-Referenz

Formatbezeichner werden in vielen C-Funktionen und in der RTL für Klassen, wie UnicodeString, verwendet.

Format-Strings enthalten zwei Typen von Objekten: reine Zeichen und Formatbezeichner. Reine Zeichen werden buchstäblich in den resultierenden String kopiert. Formatbezeichner rufen Argumente aus der Argumentliste ab und weisen ihnen ein Format zu.

Hinweis: Siehe scanf-Formatbezeichner und printf-Formatbezeichner.

Formattypen der C-Laufzeit:

Bezeichner Bedeutung

d, i

Dezimal oder Integer. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus Dezimalzahlen besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt.

u

Vorzeichenloses Integer. Entspricht "d" und "i", aber ohne Vorzeichen.

o

Oktal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus oktalen Ziffern besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt.

x,X

Hexadezimal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus Dezimalzahlen besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt.

f

Gleitkomma. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-ddd.ddd...". Wenn es sich um eine negative Zahl handelt, beginnt der String mit einem Minuszeichen. Die Anzahl der Stellen nach dem Dezimalkomma wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von zwei Dezimalstellen verwendet.

e

Wissenschaftliche Notation. Das Argument muss ein Gleitkommawert sein. Der Wert wird in einen String der folgenden Form umgewandelt: "-d,ddd...E+ddd". Wenn es sich um eine negative Zahl handelt, beginnt der String mit einem Minuszeichen. Vor dem Dezimalkomma steht immer eine Ziffer. Die Gesamtzahl der Stellen im resultierenden String (einschließlich der Ziffer vor dem Dezimalkomma) wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von 15 Stellen angenommen. Auf den Exponenten "E" im String folgen immer ein Plus- oder Minuszeichen und mindestens 3 Stellen.

g

Double. Das Argument muss ein Gleitkommawert sein. Der Wert wird unter Verwendung des Formats "Fest" oder "Wissenschaftliche Notation" in den kürzest möglichen Dezimal-String umgewandelt. Die Anzahl der signifikanten Stellen im resultierenden String wird durch den Genauigkeitsbezeichner im Format-String festgelegt. Ist dieser nicht vorhanden, wird eine vorgegebene Genauigkeit von 15 Stellen angenommen. Nachfolgende Nullen werden aus dem resultierenden String entfernt. Ein Dezimalkomma wird nur bei Bedarf angezeigt. Für den resultierenden String wird das Festkommaformat verwendet, wenn die Anzahl der Stellen vor dem Dezimalkomma kleiner oder gleich der festgelegten Genauigkeit und der Wert größer oder gleich 0,00001 ist. In allen anderen Fällen wird die wissenschaftliche Notation verwendet.

c

Zeichen. Das Argument muss ein Einzelzeichenwert sein.

s

String. Das Argument muss ein Zeichen, ein String oder ein char*-Wert sein. Der String bzw. das Zeichen wird anstelle des Formatbezeichners eingefügt. Wenn im Format-String ein Genauigkeitsbezeichner angegeben ist, bestimmt er die maximale Länge des resultierenden Strings. Ist das Argument ein String, der diese Maximallänge überschreitet, wird der String abgeschnitten.

n

Zeiger auf int. Speichert (an der Position, auf die vom Eingabeargument gezeigt wird) die Anzahl der bisher geschriebenen Zeichen.

p

Zeiger. Gibt das Eingabeargument als Zeiger aus. Das Format ist vom verwendeten Speichermodell abhängig. Es kann entweder XXXX:YYYY oder YYYY (nur Offset) sein.

Hinweis: Für die langen Versionen der jeweiligen Datentypen wird das Präfix "l", für die kurzen das Präfix "h" verwendet. Die Präfixe können für die Bezeichner "d", "i", "u", "o', "x", "f", "g" verwendet werden.

Wenn beispielsweise "%lf" anstelle von "%f" angegeben wird, müssen Sie einen double-Wert als jeweiligen Parameter anstatt eines Gleitkommawertes übergeben.

Für die folgenden Beispiele wurden die Funktionen printf und wprintf verwendet:

Integer/Dezimal:

 printf("%d\n", -5); //-5
 printf("%i\n", -5); //-5

Ohne Vorzeichen:

 printf("%u\n", 5); //5

Oktal:

 printf("%o\n", 9); //11

Hexadezimal (Groß- und Kleinbuchstaben):

 printf("%x\n", 15); //f
 printf("%X\n", 15); //F

Gleitkomma und langes Gleitkomma (longfloat):

 printf("%%f is : %f\n", 1.0/3.0); //0,333333
 printf("%%lf is : %lf\n", 5000000000000000.0/2.3); //Eine große Zahl

Wissenschaftlich:

 printf("%e\n", 5.5); //5.500000e+00

Double:

 printf("%g\n", 1.0/3.0); //0,333333

Breiten- und Genauigkeitsbezeichner:

 printf("%f\n", 1.0/3.0); //0,333333
 printf("%-5.1f\n", 1.0/3.0); //0,3
 printf("%5.1f\n", 1.0/3.0);  //  0,3 -- Zwei Whitespaces am Anfang

Zeichen und String:

 printf("%c",'a');
 printf("%s","string");

Wide-Strings:

 wprintf(L"%s", L"string");

Siehe auch