Formatierte Ausgabe für Strings.
Formatstrings sind normale char*-Strings, die beliebig viele %-Markierungen enthalten dürfen. Jede dieser Markierungen wird durch den nächstfolgende Funktionsparameter ersetzt. Der Datentyp dieses Parameters muss dabei genau zur Art der Markierung passen.
"%s, %d, %f" erwartet (in genau dieser Reihenfolge) die folgenden zusätzlichen Parameter :
char* oder String int float
Die folgende Tabelle gibt alle unterstützen %-Markierungen an.
Tag | Typ | Beschreibung |
%d | int | Schreibe eine Ganzzahl |
%i | ||
%x | int | Schreibe eine Hexadezimalzahl. Mit %x werden die Buchstaben a-f verwendet, mit %X A-F. Die Ausgabe erfolgt ohne weitere Angaben wie 0x oder <0x...>. |
%X | ||
%u | int | Schreibe eine natürliche Zahl (also eine Ganzzahl ohne Vorzeichen) |
%f | float | Schreibe ein Kommazahl mit vier Nachkommastellen. %f verwendet dabei als Dezimaltrenner einen Punkt, %F verwendet den Dezimaltrenner Ihrer Systemeinstellung. Aber in beiden Versionen erfolgt die Angabe der Zahl selbst natürlich weiter mit einem Punkt als Dezimaltrenner! |
%F | ||
%c | char | Schreibe ein einzelnes Zeichen |
%s | char* | Schreibe einen char*-String oder einen String. Zeichenketten müssen immer 0-terminiert sein. Die Angabe von anderen Werten als char* odr String kann zum Absturz von InDesign® führen! |
Achten Sie bitte darauf, dass die Datentypen der Parameter nach dem Formatstring mit den %-Platzhaltern im Formatstring übereinstimmen. Bei fehlenden Parametern wird der %-Platzhalter nicht ersetzt und direkt in das Ziel übernommen.
Zwischen dem %-Zeichen und dem Typ-Buchstaben können weitere Angaben zur Formatierung der Ausgabe gemacht werden. Die Angaben sind jeweils optional. Die Reihenfolge der Angaben muss der folgenden Tabelle entsprechen, d.h. dass beispielsweise die Füllzeichen immer vor den Angaben der Nachkommastellen festgelegt werden müssen.
Beispiel | Beschreibung | |
- | Linksbündige Ausgabe. Die Angabe macht natürlich nur Sinn, wenn Sie im Folgenden eine Länge angeben und der auszugebende Text kürzer ist. | |
#C wobei C beliebiges Zeichen mit Unicode (C)<255 ist. | #* | Füllzeichen. Ist der auszugebende Text kürzer als die festgelegte Ausgabelänge, werden die freien Stellen mit diesem Zeichen (evtl. linksbündig) gefüllt. Zeichen im Bereich 128-255 sind unter Mac und Windows unterschiedlich. |
[0]int | 20 oder 020 | Längenangabe. Ist der auszugebende Text kürzer als diese Längeangabe, wird er (evtl. linksbündig) auf die angegebe Weite verlängert. Zur Füllung wird das vorher angegebene Füllzeichen verwendet. Ist kein Füllzeichen angegeben, wird mit Leerzeichen gefüllt. Beginnt die Längenangabe mit einer 0, wird 0 als Füllzeichen verwendet. Das mit # angegebene Füllzeichen wird dann ignoriert. |
.int | .6 | Anzahl der Nachkommastellen. Achtung : Bei der Ausgabe vieler Nachkommastellen können in den hinteren Stellen Differenzen zu den Originalwerten auftreten. Unter dem Begriff IEEE-Norm oder IEEE finden Sie dazu Erklärungen im Internet. |
Hier einige Beispiele für die formatierte Ausgabe.
Format-Tag | Wert | Ausgabe |
Ganzzahlen (int) | ||
**%d** | 123 | **123** |
**%10d** | 123 | ** 123** |
**%010d** | 123 | **0000000123** |
**%-10d** | 123 | **123 ** |
**%-010d** | 123 | **1230000000** Beachten Sie, dass die Füllzeichen einfach eingefügt werden (und dadurch den Wert ändern können). |
**%#=10d** | 123 | **=======123** |
**%-#=10d** | 123 | **123=======** |
Characters (char) | ||
**%c** | 'C' | **C** |
**%10c** | 'L' | ** L** |
**%010c** | 'A' | **000000000A** |
**%-10c** | 'R' | **R ** |
**%-010c** | 'A' | **A000000000** |
**%#=10c** | 'A' | **=========A** |
**%-#=10c** | 'A' | **A=========** |
Kommazahlen (float) | ||
**%f** | 3.1415926 | **3.1416** Beachten Sie die Rundung in der letzten Nachkommastelle. |
**%F** | 3.1415926 | **3,1416** Beachten Sie den Dezimaltrenner. |
**%10f** | 3.1415926 | ** 3.1416** |
**%010f** | 3.1415926 | **00003.1416** |
**%-10f** | 3.1415926 | **3.1416 ** |
**%-010f** | 3.1415926 | **3.14160000** Beachten Sie die Rundung in der letzten Nachkommastelle und die angehängten Füllzeichen. |
**%#=10f** | 3.1415926 | **====3.1416** |
**%-#=10f** | 3.1415926 | **3.1416====** |
**%.2f** | 3.1415926 | **3.14** |
**%010.2f** | 3.1415926 | **0000003.14** |
**%.12f** | 3.1415926 | **3.141592502594** Beachten Sie, dass die IEEE-Norm hier ab der siebten Nachkommastelle ungenau wird. |
Strings (char*) | ||
**%s** | "Paul" | **Paul** |
**%s** | "P\xE2\x98\x80ul" | **P☀ul** |
**%10s** | "Paul" | ** Paul** |
**%010s** | "Paul" | **000000Paul** |
**%-10s** | "Paul" | **Paul ** |
**%-010s** | "Paul" | **Paul000000** |
**%#=10s** | "Paul" | **======Paul** |
**%-#=10s** | "Paul" | **Paul======** |
In den char*-Strings (auch in denen der Parameter) sind die folgenden Sonderzeichen erlaubt:
Format-Tag | Wert |
\" oder "" | " |
%% | % |
\t | Tabulator |
\n | Newline |
\r | Return |
\f | Formfeed |
\a | Alarm. Das Zeichen ist erlaubt, hat aber keine Wirkung. |
\b | Backspace |
\v | Vertical tab |
\0 | Ascii-0. Das Zeichen beendet den String. Darauf folgende Zeichen werden von allen Stringfunktionen ignoriert. |
\\ | \ |
\xXX, X ∈ [0-9a-fA-F] | Ascii-Zeichen mit dem angegeben Hex-Code. Beachten Sie bitte, dass Zeichen mit einem Ascii-Code > 127 als UTF-8 Zeichen erwartet werden. Ein ä wird also z.B. durch \xc3\xa4 kodiert und und nicht \x84 (Mac) oder \xE4 (Windows). |
Ab v4.0.5 R1660 gibt es keine Längenbeschränkungen mehr bei formatierten Strings. Beachten Sie aber bitte, dass z.B bei sprintf der Zielstring durchaus begrenzt ist.
Bis Version 3.2 R2299 muss der Ergebnisstring nach dem Ersetzen aller %-Tags kürzer als 10.000 Zeichen sein. Längere Ausgaben führen zum Fehlverhalten oder Absturz von InDesign®.
Ab Version 3.2 R2300 darf der Ergebnisstring nach dem Ersetzen aller %-Tags bis zu 32 kB lang sein. Längere Ausgaben werden gekürzt und mit " ...\n" am Ende markiert.
Alphabetic index HTML hierarchy of classes or Java