Jede Umwandlungsangabe in der Formatzeichenkette wird durch das Zeichen % eingeleitet, auf das der Reihe nach diese Informationen folgen:
Keine oder mehrere Flags (in beliebiger Reihenfolge), die die Bedeutung der Umwandlungsangabe modifizieren (Beschreibung siehe nächster Abschnitt).
Eine optionale Mindestfeldbreite. Wenn der konvertierte Wert weniger Byte aufweist als die Feldbreite, wird er standardmäßig auf der linken Seite oder, bei Angabe des Flags zur Linksausrichtung (-) auf der rechten Seite, mit Zwischenraum aufgefüllt. Die Feldbreite kann auch mit einem Asterisk (*) angegeben werden. In diesem Fall wird die Feldbreite dynamisch, auf Grundlage des Werts eines zusätzlichen int-Arguments festgelegt.
Eine optionale Genauigkeit, die angibt, wie viele Stellen bei d-, i-, o-, u-, x- und X-Umwandlungen mindestens verwendet werden müssen (das Feld wird durch vorangestellte Nullen angefüllt); die Anzahl der Stellen nach dem Grundzahlzeichen bei e-, E- und f-Umwandlungen, die maximale Anzahl signifikanter Stellen bei g- und G-Umwandlungen; oder die maximale Anzahl der Byte, die von der s-Umwandlung aus einer Zeichenkette ausgegeben werden sollen. Die Genauigkeit wird durch einen Punkt (.) gefolgt von einem Asterisk ( *) (siehe unten) oder einer Zeichenkette von Dezimalzahlen angegeben.
Eine optionale Folge von Größenpräfixen, die die Größe des zugehörigen Arguments angibt (Beschreibung siehe Größenpräfixe). Größenpräfixe sind in D nicht erforderlich. Sie werden aus Gründen der Kompatibilität mit der C-Funktion printf() zur Verfügung gestellt.
Eine Umwandlungskennung, die den Typ der auf das Argument anzuwendenden Umwandlung angibt.
Die Funktion printf(3C) unterstützt auch Umwandlungsangaben der Form % n$, wobei n eine ganze Dezimalzahl ist. DTrace printf() unterstützt diese Art von Umwandlungsangabe nicht.