|
|
home ·print Formate |
letzte Änderung: TCP-States Netzwerk Links Australien Wertpapiere |
Strings mit printf formatieren
Print Formate
Es gibt viele Funktionen in C/C++ mit deren Hilfe wir Daten von der internen
Representation in ein für Menschen lesbares format umwandeln können.
Die Print-Funktionen können wir in zwei Kategorien unterteilen:
Die Byte-Print-Funktionen
(deklariert in
Die Wide-Print-Functionen
(deklariert in Print Formate:
Ein Format-String hat die gleiche Syntax fü beide Arten
von Print-Funktionen.
Ein Format String besteht aus keinem oder mehreren Umwandlungs Spezifikationen die in einem ganz normalen Text eingebettet sein können.
Die Print funktionen durchsuchen den Format-String von vorne nach hinten um
herauszufinden was für Umwandlungen gemacht werden müssen. Print Funktionen
Die Format-Strings können ganz normalen Text oder White-Spaces neben
Umwandlungs Spezifikationen beinhalten.
Bold bedeutet neue features die mit C99 einführt wurden.
Alle Umwandlungs Spezifikationen fangen mit einem Prozent Zeichen
(
Den Format-Flags können Feld-Längen Bezeichner folgen, welche die mimimale
Anzahl an Zeichen beschreiben, die ausgegeben werden sollen.
Danach kann ein Punkt (
Die Genauigkeit kann auch durch einen
asterisk ( Umwandlungs SpezifikationenNun folgen die Umwandlungs Spezifizierer. Je nach Spezifizierer werden verschieden Typen als Argument erwartet, und, falls keine erweiterten Formatierungen (Feldlänge, Präzision;) angegeben wurden, werden die in der Tabelle angegebenen Default-Werte verwendet:
Konversions Argument Konvertierter Default Prä-
Spezifizierer Typ Wert Base zision
%a double x (double)x 10 6 added with C99
%La long double x (long double)x 10 6 added with C99
%A double x (double)x 10 6 added with C99
%LA long double x (long double)x 10 6 added with C99
%c int x (unsigned char)x
%lc wint_t x wchar_t a[2] = {x}
%d int x (int)x 10 1
%hd int x (short)x 10 1
%ld long x (long)x 10 1
%hhd int x (signed char)x 10 1 added with C99
%jd intmax_t x (intmax_t)x 10 1 added with C99
%lld long long x (long long)x 10 1 added with C99
%td ptrdiff_t x (ptrdiff_t)x 10 1 added with C99
%zd size_t x (ptrdiff_t)x 10 1 added with C99
%e double x (double)x 10 6
%Le long double x (long double)x 10 6
%E double x (double)x 10 6
%LE long double x (long double)x 10 6
%f double x (double)x 10 6
%Lf long double x (long double)x 10 6
%F double x (double)x 10 6 added with C99
%LF long double x (long double)x 10 6 added with C99
%g double x (double)x 10 6
%Lg long double x (long double)x 10 6
%G double x (double)x 10 6
%LG long double x (long double)x 10 6
%i int x (int)x 10 1
%hi int x (short)x 10 1
%li long x (long)x 10 1
%hhi int x (signed char)x 10 1 added with C99
%ji intmax_t x (intmax_t)x 10 1 added with C99
%lli long long x (long long)x 10 1 added with C99
%ti ptrdiff_t x (ptrdiff_t)x 10 1 added with C99
%zi size_t x (ptrdiff_t)x 10 1 added with C99
%n int *x
%hn short *x
%ln long *x
%hhn int *x added with C99
%jn intmax_t *x added with C99
%lln long long *x added with C99
%tn ptrdiff_t *x added with C99
%zn size_t *x added with C99
%o int x (unsigned int)x 8 1
%ho int x (unsigned short)x 8 1
%lo long x (unsigned long)x 8 1
%hho int x (unsigned char)x 8 1 added with C99
%jo intmax_t x (uintmax_t)x 8 1 added with C99
%llo long long x (unsigned long long)x 8 1 added with C99
%to ptrdiff_t x (size_t)x 8 1 added with C99
%zo size_t x (size_t)x 8 1 added with C99
%p void *x (void *)x
%s char x[] x[0]... large
%ls wchar_t x[] x[0]... large
%u int x (unsigned int)x 10 1
%hu int x (unsigned short)x 10 1
%lu long x (unsigned long)x 10 1
%hhu int x (unsigned char)x 8 1 added with C99
%ju intmax_t x (uintmax_t)x 8 1 added with C99
%llu long long x (unsigned long long)x 8 1 added with C99
%tu ptrdiff_t x (size_t)x 8 1 added with C99
%zu size_t x (size_t)x 8 1 added with C99
%x int x (unsigned int)x 16 1
%hx int x (unsigned short)x 16 1
%lx long x (unsigned long)x 16 1
%hhx int x (unsigned char)x 8 1 added with C99
%jx intmax_t x (uintmax_t)x 8 1 added with C99
%llx long long x (unsigned long long)x 8 1 added with C99
%tx ptrdiff_t x (size_t)x 8 1 added with C99
%zx size_t x (size_t)x 8 1 added with C99
%X int x (unsigned int)x 16 1
%hX int x (unsigned short)x 16 1
%lX long x (unsigned long)x 16 1
%hhX int x (unsigned char)x 8 1 added with C99
%jX intmax_t x (uintmax_t)x 8 1 added with C99
%llX long long x (unsigned long long)x 8 1 added with C99
%tX ptrdiff_t x (size_t)x 8 1 added with C99
%zX size_t x (size_t)x 8 1 added with C99
%% none '%'
Es gibt noch einige Sonderfälle die nicht in der obigen Tabelle angegeben sind:
Die Großschrift-Variante der Umwandlungs Spezifizierer gibt normalerweise auch nur Großschrift aus. Beispiele
printf("%c", 'a') generates a
printf("<%3c|%-3c>", 'a', 'b') generates < a|b >
wprintf(L"%c", 'a') generates btowc(a)
printf("%lc", L'a') generates a
wprintf(L"lc", L'a') generates L'a'
Wir verwenden
printf("%d %o %x", 31, 31, 31) generates 31 37 1f
printf("%hu", 0xffff) generates 65535
printf("%#X %+d", 31, 31) generates 0X1F +31
printf("%f", 31.4) generates 31.400000
printf("%.0f %#.0f", 31.0, 31.0)generates 31 31.
printf("%.6g", 31.4) generates 31.4
printf("%.1g", 31.4) generates 3.14e+01
int x;
printf("abc%n", &x) schreibt 2 in die Variable x
printf("length [%d]", x) generates length [3]
printf("%p", (void *)&x) generates, e.g. F4C0
printf("%s", "hello") generates hello
printf("%.2s", "hello") generates he
wprintf(L"%s", "hello") generates hello
printf("%ls", L"hello") generates hello
wprintf(L"%.2s", L"hello") generates he
Um aber ein simples
printf("%%") generates %
|
|
©2016· Claus Ebert · |