format | Formatzeichenkette |
… | weitere Argumente je nach Platzhalter |
Die Formatzeichenkette der printf()
-Familie
kann neben gewöhnlichen Zeichen
Platzhalter für andere Werte besitzen.
Nach einem %
-Zeichen folgen optional
-
für linksbündige Ausgabe, ein +
(immer mit Vorzeichen), ein Leerzeichen (vor positiver Zahl), ein #
für "alternative Darstellung", (bei Oktal- und Hexadezimalausgabe mit Anzeige der Basis 0
bzw. 0x
) oder eine 0
(zum Auffüllen mit führenden Nullen),*
da steht, aus dem nächsten noch nicht verarbeiteten Argument der variablen Argumentliste,.
eine Präzisionsangabe für die Anzahl von Nachkommastellen gebrochener Zahlen bzw. für die minimale Stellenzahl bei Ganzzahlen –die Angabe erfolgt als Ganzzahl oder bei *
aus dem nächsten Argument der variablen Argumentliste–,hh
bei Zeichen für Zahl-Ausgabe, h
bei short int
, l
long
oderL
bei long double
,Der Platzhalter wird zwingend abgeschlossen durch einen Konversionsbuchstaben:
d oder i | dezimal integer |
o , u , x , X | oktal, vorzeichenlos dezimal, hexadezimal mit Klein-/Großbuchstaben |
f , F | double in der Form ddd.ddd |
e , E | double in Zehnerpotenz-Schreibweise |
g , G | double in einer kürzeren der beiden oberen Formen |
c | ein Zeichen |
s | C-Zeichenkette |
p | Zeiger als Hexadezimalzahl |
n | Anzahl bisher geschriebener Zeichen (in int* -Argument abzulegen) |
% | Prozentzeichen wird geschrieben (weiteres kein Argument erforderlich) |
Den Platzhaltern wird ein folgendes Argument mit dem passenden Typ zugeordnet.
Rückgabewert: Anzahl der ausgegebenen Zeichen, bei Ausgabefehler einen negativen Wert.
Passen irgendein Platzhalter und der Argumenttyp nicht, ist das Verhalten undefiniert.
#include <cstdio> using namespace std; int main() { char *str = "Hallo"; printf("%s%c %s Nr. %d\n", // Platzhalter // / | \ | str,',',"Welt",1); // einzusetzende Werte printf("Gebrochene Zahl im \"Waehrungsformat\" : %+10.2f\n", 123.4567); printf("Amerika ist %s,\nDeutschland ist %s.\n\t---[%s]\n", "ein gefaehrliches Land", "AOK", "Martin Walser"); }