Manuel de suivi dynamique Solaris

Spécificateurs de largeur et de précision

La largeur de champ minimum peut être spécifiée en tant que chaîne numérique décimale précédée de n'importe quel spécificateur d'indicateur, auquel cas la largeur de champ est définie sur le nombre spécifié de colonnes. La largeur de champ peut également être spécifiée en tant qu'astérisque (*) auquel cas on accède à un argument supplémentaire de type int pour déterminer la largeur de champ. Par exemple, pour afficher un nombre entier x dans une largeur de champ déterminée par la valeur de la variable int w, vous devez écrire l'instruction D suivante :

printf("%*d", w, x);

La largeur de champ peut également être spécifiée en utilisant un caractère ? pour indiquer que la largeur de champ doit être définie en fonction du nombre de caractères requis pour formater une adresse en hexadécimal dans le modèle de données du noyau du système d'exploitation. La largeur est définie sur 8 si le noyau utilise un modèle de données à 32 bits ou sur 16 s'il en utilise un à 64 bits.

La précision pour la conversion peut être spécifiée en tant que chaîne numérique décimale suivie d'un point (.) ou d'un astérisque précédé d'un ( *) point. Si un astérisque est utilisé pour spécifier la précision, on accède à un argument supplémentaire de type int avant la conversion pour déterminer la précision. Si la largeur et la précision sont précisées en tant qu'astérisques, l'ordre des arguments de printf() pour la conversion doit apparaître dans l'ordre suivant. largeur, précision, valeur.