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 · email senden |