Comment formater avec printf () dans la programmation de c

La fonction de sortie le plus populaire dans la programmation C doit être printf (). Il est le favori de tout le monde. Il est l'une des premières fonctions que vous apprenez en C. Et comme l'un des plus complexes, il est l'une des fonctions que personne ne sait jamais entièrement.

Sommaire

Le pouvoir dans printf () réside dans sa chaîne de formatage. Ce texte peut être emballé avec le texte brut, des séquences d'échappement, et des caractères de conversion, qui sont les petits goobers pour cent qui insèrent des valeurs dans le texte de sortie. Ce sont ces caractères de conversion qui donnent printf () sa puissance réelle, et ils sont aussi l'un des aspects de moins compris la fonction.

Comment formater virgule flottante

Vous pouvez utiliser plus que le caractère fondamental de conversion% f pour formater les valeurs à virgule flottante. En fait, voici un grand format que vous pouvez utiliser dans le printf () le texte de mise en forme de la fonction:

%w.pF

La w définit la largeur maximale du nombre entier, y compris la décimale. La p définit précision. Par example:

printf ("% 9.2f", 12.45) -

Cette déclaration émet quatre espaces et puis 12.45. Ces quatre espaces ainsi 12.45 (cinq caractères au total) est égal à la 9 dans la largeur. Seules deux valeurs sont affichées à la droite de la virgule, car 0,2 est utilisé dans le caractère de conversion% f.

Il est possible de spécifier la valeur de précision sans définir une largeur, mais il doit être préfixé par la virgule, comme dans .2f% (deux pour cent point F). Voir Le printf () Virgule flottante formatage Gamut.

LA Printf () FLOTTANT-POINT FORMATAGE GAMUT

#include int main () {float sample1 = 34,5 flottant sample2 = 12,3456789-printf ("%% = 9.1f% 9.1f n", sample1) -printf ("%% =% 8.1F 8.1F n", sample1) -printf ("%% = 7.1f% 7.1f n", sample1) -printf ("%% = 6.1f% 6.1f n", sample1) -printf ("%% = 5.1f% 5.1f n ", sample1) -printf (" %% = 4.1f% 4.1f n ", sample1) -printf (" %% = 3.1f% 3.1f n ", sample1) -printf (" 2.1f de %% =% 2.1f n ", sample1) -printf (" %% = 1.1f% 1.1f n ", sample1) -printf (" %% = 9.1f% 9.1f n ", sample2) -printf (" 9.2f %% =% 9.2f n ", sample2) -printf (" %% = 9.3f% 9.3f n ", sample2) -printf (" %% =% 9.4F 9.4F n ", sample2) -printf ("%% = 9.5f% 9.5f n", sample2) -printf ("%% = 9.6f% 9.6f n", sample2) -printf ("%% = 9.7f% 9.7f n ", sample2) -printf (" %% = 9.6f% 9.6f n ", sample2) -printf (" %% = 9.7f% 9.7f n ", sample2) -printf (" %% = 9.8f% 9.8f n ", sample2) -retour (0) -}

Exercice 1: Tapez le code source à partir du printf () Virgule flottante formatage Gamut dans votre éditeur. Il ressemble à beaucoup de travail, mais vous pouvez créer le code rapidement en utilisant beaucoup de copie-coller.




La sortie de l'exercice 1 permet d'illustrer la largeur et la précision des portions de la sortie du caractère de conversion% f:

9.1f% = 34,5% = 34,5% 8.1F 7.1f = 34,5% = 34,5% 6.1f 5.1f = 34,5% = 34,5% 4.1f 3.1f = 34,5% = 34,5% 2.1f 1.1f = 34,5% = 12,3 9.1f 9.2f% = 12,35% 9.3f = 12,346% 9.4F = 12,3457% 9.5f = 12,34568% 9.6f = 12,345679% 9.7f = 12,3456793% 9.8f = 12,34567928

De cette sortie, vous pouvez voir comment la valeur de largeur "pads" les nombres sur la gauche. Comme la valeur de la largeur diminue, il en va de rembourrage. Toutefois, lorsque la largeur spécifiée est plus large que la valeur d'origine, non-sens est affiché, comme représenté par les deux dernières lignes de sortie. En effet, la largeur est au-delà de la limite de simple précision.

Réglage de la largeur de sortie

La w option utilisée à la largeur de sortie est disponible pour tous les personnages de conversion, et pas seulement% f. La largeur est le montant minimum de l'espace prévu pour la sortie. Lorsque la sortie est inférieure à la largeur, il est juste; justifiée. Lorsque la sortie est supérieure à la largeur, la largeur est ignorée. Voir amuser avec la largeur.

Jouer avec le WIDTH

main () {printf ("15s %% =% 15s n", "Bonjour") #include int - printf ("14s %% =% 14s n", "bonjour") - printf ("%% = 13s % 13s n "," hello ") - printf (" 12s %% =% 12s n "," Bonjour ") - printf (" 11s %% =% 11s n "," bonjour ") - printf (" %% 10s =% 10s n "," bonjour ") - printf (" %% 9s =% 9s n "," bonjour ") - printf (" %% 8s =% 8s n "," bonjour ") -printf ("%% = 7s 7s% n", "bonjour") - printf ("%% 6s =% 6s n", "bonjour") - printf ("%% =% 5s 5s n", "bonjour") - printf ("%% 4s =% 4s n", "bonjour") - retour (0) -}

Exercice 2: Tapez le code source de jouer avec la largeur dans un nouveau projet. Construire et exécuter d'examiner la sortie, qui ressemble à ceci:

% 15s = bonjour% 14s = bonjour% 13s = bonjour% 12s = bonjour% 11s = bonjour% 10s = bonjour% 9s = bonjour% 8s = bonjour% = 7s bonjour% 6s = bonjour% 5s = bonjour% 4s = bonjour

Comme avec l'option de largeur pour nombres à virgule flottante (voir l'exercice précédent), l'espace est rembourré sur la gauche lorsque la largeur est supérieure à la chaîne affichée. Mais quand la largeur est inférieure à la longueur de la chaîne, la chaîne complète est toujours affichée.

Lorsque la valeur de largeur est spécifiée pour un nombre entier, il peut être utilisé à droite, aligner la sortie. Par example:

printf ("% 4d", value) -

Cette déclaration assure que la sortie de la valeur est droit; justifiée et au moins quatre caractères larges. Si la valeur est moins de quatre caractères de large, elle est complétée avec des espaces sur la gauche. Autrement dit, à moins que vous vous en tenez un 0 dans il:

printf ("% 04d", value) -

Dans ce cas, la printf () plaquettes de fonction de la largeur de zéros pour garder tout quatre caractères larges.

Comment aligner sortie

La valeur de largeur dans le caractère de conversion aligne sortie vers la droite, connu sous le nom justification à droite. Mais pas tout va bien. Parfois, vous voulez justification gauche. Pour forcer le rembourrage sur le côté droit de la sortie, insérer un signe moins devant la valeur de la largeur dans le caractère de l'% de conversion. Par example:

printf ("% - 15s", String) -

Cette déclaration affiche le texte dans la chaîne de tableau justifié à gauche. Si la chaîne est plus courte de 15 caractères, les espaces sont ajoutés à droite.

Le code source à la réunion dans le Moyen affiche deux chaînes. Le premier est laissé; justifiée dans une gamme de largeurs variables. La largeur devient plus petit avec chaque énoncé printf progressive ().

RENCONTRE AU MOYEN-

#include int main () {printf ("% - 9s me n", "rencontre") - printf ("% - 8s me n", "rencontre") - printf ("% - 7s me n", «rencontrer») - printf ("% - 6s me n", "rencontre") - printf ("% - 5s me n", "rencontre") - printf ("% - 4s me n", "se rencontrent ") -retour (0) -}

Exercice 3: Copiez le code Réunion forme au Moyen dans votre éditeur. Créer le programme et l'exécuter pour voir la sortie d'alignement démontré.

Exercice 4: Écrire un programme qui affiche les noms et prénoms des quatre premiers présidents des États-Unis. Stocker les noms dans un tableau de char multidimensionnelle. Les noms doivent aligner de sorte que la sortie ressemble à ceci:

George WashingtonJohn AdamsThomas JeffersonJames Monroe

» » » » Comment formater avec printf () dans la programmation de c