Die Formatierung bei printf wird mittels 'Formatierungszeichen' realisiert. Die folgende Tabelle enthält eine Auswahl häufig benutzter Zeichen
%d %i Decimal signed integer. %o Octal integer. %x %X Hex integer. %u Unsigned integer. %c Character. %s String. siehe unten. %f double %e %E double. %g %G double. %p zeiger. %n Number of characters written by this printf. No argument expected. %% %. No argument expected. |
Die Bezeichner können aus bis zu 6 Teilen bestehen, siehe Tabelle unten. Sie müssen in der hier verwendeten Reihenfolge benutzt werden.
| % | Flags | minimaler Platz | Punkt | Genauigkeit | Typ |
| erforderlich | optional | optional | optional | optional | erforderlich |
% markiert den Beginn der Formatierungssymbole und ist zwingend erforderlich.
Formatbezeichner können mit Hilfe folgender Flags variiert werden
- linksbündig. 0 Felder mit 0 ausfüllen (an Stelle von Leerzeichen). + Vorzeichen einer Zahl immer ausgeben. blank positive Zahlen mit Leerzeichen beginnen. # verschiedene Bedeutung: %#o (Oktal) 0 Präfix wird eingefügt. %#x (Hex) 0x Präfix wird bei Werten ungl. Null eingefügt. %#X (Hex) 0X Präfix wird bei Werten ungl. Null eingefügt. %#e Dezimalpunkt immer anzeigen. %#E Dezimalpunkt immer anzeigen. %#f Dezimalpunkt immer anzeigen. %#g Dezimalpunkt immer anzeigen. Nullen nach dem Dezimalpunkt werden nicht beseitigt. %#G Dezimalpunkt immer anzeigen. Nullen nach dem Dezimalpunkt werden nicht beseitigt. |
Hier einige Beispiele
printf(" %-10d \n", number);
printf(" %010d \n", number);
printf(" %-#10x \n", number);
printf(" %#x \n", number);
|
Standardmäßig wird die Anzahl der Felder so gewählt, daß der für die Ausgabe benötigte Platz minimal ist. Im folgenden Beispiel kann man sehen, wie das gemacht wird.
main()
{
int number=5;
char *pointer="little";
printf("Here is a number-%4d-and a-%10s-word.\n", number, pointer);
}
/*********************************
*
* Program result is:
*
* Here is a number- 5-and a- little-word.
*
*********************************/
|
Die Werte werden rechtsbündig ausgegeben. Mit Hilfe des
- flag könnte man sie auch linksbündig ausgeben.Wenn man die
Genauigkeit (d.h. die Anzahl der Nachkommastellen) festlegen will, mit der ein Wert ausgegeben wird, muß man einen Punkt verwenden.%8.2f
Das heißt z.B., daß ein Bereich von 8 Zeichen für die Ausgabe reserviert werden soll. Die letzten beiden stellen werden für die Nachkommastellen reserviert.
%.2f
Es wird ein Bereich mit mindestens 2 Zeichen bereitgestellt und für Nachkommastellen reserviert.
Formatbezeichner beschreiben die zur Ausgabe erwarteten Daten. Mit dem Formatbezeichner wird die Formatierungsbeschreibung für einen Wert abgeschlossen. Die folgende Liste wird bei 'printf' ,'sprintf' ,'fprintf' und 'scanf' benutzt.
main()
{
int number=5;
char *pointer="little";
printf("Here is a number %d and a %s word.\n", number, pointer);
}
/*********************************
*
* Program result is:
*
* Here is a number 5 and a little word.
*
*********************************/