Chaque spécification de conversion dans la chaîne de format est introduite par le caractère % qui précède les informations suivantes dans la séquence :
Aucun ou plusieurs indicateurs (dans n'importe quel ordre), qui modifient la signification de la spécification de conversion comme décrit dans la section suivante.
Une largeur de champ minimale facultative. Si la valeur convertie dispose d'un nombre d'octets inférieur à la largeur de champ, elle sera complétée par des espaces sur la gauche par défaut, ou sur la droite si l'indicateur d'alignement à gauche (-) est spécifié. La largeur de champ peut également être spécifiée par un astérisque (*), auquel cas la largeur de champ est définie dynamiquement en fonction de la valeur d'un argument supplémentaire de type int.
Une précision facultative, indiquant le nombre minimum de chiffres devant apparaître pour les conversions d, i, o, u, x et X (le champ est complété avec des zéros non significatifs) ; le nombre de chiffres devant apparaître après le caractère de base des conversions e, E et f, le nombre maximum de chiffres significatifs pour les conversions g et G ou le nombre maximum d'octets à afficher à partir d'une chaîne par la conversion s. La précision prend la forme d'un point (.) suivi soit d'un astérisque ( *), décrit ci-dessous, soit d'une chaîne numérique décimale.
Une séquence facultative de préfixes de taille indiquant la taille de l'argument correspondant, décrite à la section Préfixes de taille . Les préfixes de taille ne sont pas nécessairement en D et sont fournis à des fins de compatibilité avec la fonction printf() C.
Un spécificateur de conversion indiquant le type de conversion à appliquer à l'argument.
La fonction printf(3C) prend également en charge des spécifications de conversion sous le format % n $ où n est en nombre entier décimal ; la fonction printf() de DTrace ne prend pas en charge ce type de spécification de conversion.