PRINTF |
Impression avec format |
---|---|
Turbo C | stdio.h |
Syntaxe
int printf(const char *texte,...) |
Paramètres
Nom | Description | |
---|---|---|
texte | Ce paramètre permet d'indiquer le texte à afficher. Il est a noter que un ou plusieurs des spécificateurs suivants peuvent être inclus dans le texte et il utilisera un argument supplémentaire pour chaque spécificateurs : | |
Spécificateur | Description | |
%c | Ce spécificateur indique d'insérer à cette position un caractère contenu dans la liste des arguments après le texte | |
%d | Ce spécificateur indique d'insérer à cette position un entier sous forme décimal contenu dans la liste des arguments après le texte | |
%f | Ce spécificateur indique d'insérer à cette position un nombre à virgule flottante contenu dans la liste des arguments après le texte | |
%i | Ce spécificateur indique d'insérer à cette position un entier contenu dans la liste des arguments après le texte | |
%o | Ce spécificateur indique d'insérer à cette position un entier sous forme octal contenu dans la liste des arguments après le texte | |
%s | Ce spécificateur indique d'insérer à cette position une chaîne de caractères contenu dans la liste des arguments après le texte | |
%x | Ce spécificateur indique d'insérer à cette position un entier sous forme hexadécimal contenu dans la liste des arguments après le texte | |
Il est possible d'ajouter une précision du nombre décimal afficher en insérant le nombre entre le symbole de pourcentage et la lettre. |
Description
Cette fonction effectue l'écriture de texte selon un certain format sur la console.
Remarques
- La fonction printf accepte une série d'arguments, applique à chacun une spécification de format contenue dans la chaîne de caractères de format donnée par format et affiche les données formatées sur stdout. Il doit y avoir le même nombre de spécifications de format que de paramètres.
- La chaîne de caractères de format : La chaîne de caractères de format, présente dans chacun des appels de fonction ... printf, contrôle la manière dont chaque fonction convertira, formatera et affichera ses paramètres. Il doit y avoir suffisamment de paramètres pour le format ; s'il n'y en a pas, les résultats seront imprévisibles et probablement désastreux. Les paramètres en excès (plus que requis par le format) sont simplement ignorés. La chaîne de caractères de format est une chaîne de caractères contenant deux types d'objets : des caractères simples et des spécifications de conversion. Les caractères simples sont simplement copiés textuellement dans le flux de sortie. Les spécifications de conversion récupèrent les paramètres de la liste de paramètres et leur appliquent un formatage.
- Spécifications des formats : ... les spécifications du format printf ont la format suivant :
- Chaque spécification de conversion commence par le caractère de pourcentage (%). Après le % viennent les suivants, dans cet ordre :
- Composantes de chaîne de caractères de format facultatifs : Voici les aspects généraux du formatage de sortie contrôlés par les caractères facultatifs, les spécificateurs et les modificateurs dans la chaîne de caractères de format :
- Caractères de type de conversion : Le tableau suivant répertorie les caractères de type de conversion ...printf, le type de paramètre d'entrée accepté par chacun et le format dans lequel la sortie apparaîtra. Les informations contenues dans ce tableau de caractères de type sont basées sur l'hypothèse qu'aucun caractère d'indicateur, spécificateur de largeur, spécificateur de précision ou modificateur de taille d'entrée n'a été inclus dans la spécification de format. Pour voir comment l'ajout des caractères facultatifs et des spécificateurs affecte la sortie ... printf, reportez-vous aux tableaux suivant celui-ci. Voici les valeurs numériques :
- Les nombres à virgule flottante infinis sont affichés sous la forme +INF et -INF. Un IEEE Not-a-Number est affiché comme +NAN ou -NAN.
- Les caractères de drapeau : Les caractères de drapeaux sont moins (-), plus (+), dièse (#) et blanc ( ). Ils peuvent apparaître dans n'importe quel ordre et combinaison :
- Plus (+) a priorité sur le blanc ( ) si les deux sont donnés.
- Formes alternatives : si le drapeau # est utilisé avec un caractère de conversion, il a l'effet suivant sur le paramètre (arg) en cours de conversion :
- Spécificateurs de largeur : Le spécificateur de largeur définit la largeur de champ minimale pour une valeur de sortie. La largeur est spécifiée de deux manières : directement, via une chaîne de chiffres décimaux, ou indirectement, via un astérisque (*). Si vous utilisez un astérisque pour le spécificateur de largeur, le paramètre suivant dans l'appel (qui doit être un int) spécifie la largeur minimale du champ de sortie. En aucun cas une largeur de champ inexistante ou faible ne provoque la troncature d'un champ. Si le résultat d'une conversion est plus large que la largeur du champ, le champ est simplement agrandi pour contenir le résultat de la conversion :
- Prescripteurs de précision : La spécification de précision commence toujours par un point (.), pour le séparer de tout spécificateur de largeur précédent. Ensuite, comme la largeur, la précision est spécifiée soit directement, via une chaîne de chiffres décimaux, soit indirectement, via un astérisque (*). Si vous utilisez un astérisque pour le spécificateur de précision, l'argument suivant dans l'appel (traité comme un int) spécifie la précision. Si vous utilisez des astérisques pour la largeur ou la précision, ou pour les deux, le paramètre de largeur doit suivre immédiatement les spécificateurs, suivi du paramètre de précision, puis du paramètre des données à convertir :
- Si une précision explicite de zéro est spécifiée et que la spécification de format pour le champ est l'un des formats d'entiers (c'est-à-dire, d, i, 0, U, x), et que la valeur à afficher est 0, aucune valeur numérique caractères seront sortis pour ce champ (c'est-à-dire que le champ sera vide).
- Le caractère modificateur de taille d'entrée (F, N, h, l ou L) donne la taille de l'argument d'entrée suivant :
Caractère Description F Pointeur éloigné (far) N Pointeur court (near) h Entier court (short int) l Entier long (long) L Réel de double précision long (long double)
- Les modificateurs de taille d'entrée (F, N, h, l et L) affectent la manière dont les fonctions ...printf interprètent le type de données du paramètre d'entrée correspondant arg. F et N s'appliquent uniquement aux paramètres d'entrée étant des pointeurs (%p, %s et %n). h, L et L s'appliquent aux paramètres d'entrée étant numériques (entiers et virgule flottante).
- La fonction printf renvoie le nombre d'octets en sortie. En cas d'erreur, printf renvoie EOF.
% [flags] [width] [.prec] [F|N|h|l|L] type |
Paramètre | Description |
---|---|
[flags] | Une séquence facultative de caractères de drapeau |
[width] | Un spécificateur de largeur facultatif |
[.prec] | Un spécificateur de précision facultatif |
[F|N|h|l|L] | Un modificateur optionnel de taille d'entrée |
[type] | Le caractère de type de conversion |
Caractère ou spécificateur | Ce qu'il contrôle ou spécifie | |
---|---|---|
flags | Justification de la sortie, signes numériques, points décimaux, zéros à droite, préfixes octaux et hexadécimaux. | |
width | Nombre minimum de caractères à afficher, remplissage avec des blancs ou des zéros. | |
precision | Nombre maximum de caractères à afficher ; pour les entiers, nombre minimum de chiffres à afficher. | |
size | Remplacer la taille par défaut du paramètre : | |
Paramètre | Description | |
N | Pointeur court (Near) | |
F | Pointeur éloigné (Far) | |
h | Entier court (shortint) | |
l | Entier long (long) | |
L | Réel de double précision long (long double) |
Caractère de type | Paramètre d'entrée | Format de sortie |
---|---|---|
d | Entier | signed décimal int |
i | Entier | signed décimal int |
o | Entier | unsigned octal int |
u | Entier | unsigned décimal int |
x | Entier | unsigned hexadécimal int (avec a, b, c, d, e, f) |
X | Entier | unsigned hexadécimal int (avec A, B, C, D, E, F) |
f | Virgule flottante | signed valeur dans le format [-]dddd.dddd |
e | Virgule flottante | signed valeur dans le format [-]d.dddd e[+/-]ddd |
g | Virgule flottante | Valeur signée sous forme e ou f, basée sur la valeur et la précision données. Les zéros de fin et la virgule décimale ne sont affichés que si nécessaire. |
E | Virgule flottante | Identique à e, mais avec E pour exposant |
G | Virgule flottante | Identique à g, mais avec E comme exposant si le format e est utilisé. |
Voici les valeurs de caractères :
Caractère de type | Paramètre d'entrée | Format de sortie |
---|---|---|
c | Caractère | Caractère unique. |
s | Chaîne de caractères | Pointeur vers l'affichage des caractères jusqu'à ce qu'un terminateur nul soit atteint ou que la précision soit atteinte. |
% | Aucun | Le caractère % est affiché. |
Voici les valeurs de pointeurs :
Caractère de type | Paramètre d'entrée | Format de sortie |
---|---|---|
n | Pointeur vers int | Entreposage (à l'emplacement pointé par le paramètre d'entrée) un nombre de caractères écrits jusqu'à présent. |
p | Pointeur | Affiche le paramètre d'entrée sous le format d'un pointeur : far - Les pointeurs sont affichés sous le format XXXX:YYYY near - Les pointeurs sont imprimés au format AAAA (décalage uniquement) |
Certaines conventions accompagnent certaines de ces spécifications, comme résumé dans le tableau suivant :
Caractères | Conventions |
---|---|
e ou E | Le paramètre est converti pour correspondre au style [-] d.ddd...e[+/-]ddd où : - Un chiffre précède le point décimal. - Le nombre de chiffres après la virgule est égal à la précision. - L'exposant contient toujours au moins deux chiffres. |
f | Le paramètre est converti en notation décimale dans le style [-] ddd.ddd..., où le nombre de chiffres après la virgule décimale est égal à la précision (si une précision différente de zéro a été donnée). |
g ou G | Le paramètre est affiché dans le style e, E ou f, avec la précision spécifiant le nombre de chiffres significatifs. Les zéros à droite sont supprimés du résultat et un point décimal n'apparaît que si nécessaire. Le paramètre est affiché dans le style e ou f (avec quelques contraintes) si g est le caractère de conversion, et dans le style E si le caractère est G. Le style e est utilisé uniquement si l'exposant résultant de la conversion est soit : (a) supérieure à la précision ou (b) moins de -4 |
x ou X | Pour les conversions x, les lettres a, b, c, d, e et f apparaîtront dans la sortie ; pour les conversions X, les lettres A, B, C, D, E et F apparaîtront. |
Drapeau | Description |
---|---|
- | Justifie à gauche le résultat, complète à droite avec des blancs. Si non fourni, justifie le résultat à droite, complète à gauche avec des zéros ou des blancs. |
+ | Les résultats de conversion signés commencent toujours par un signe plus (+) ou moins (-). |
blanc | Si la valeur est non négative, la sortie commence par un blanc au lieu d'un plus ; les valeurs négatives commencent toujours par un moins. |
# | Spécifie que arg doit être converti à l'aide d'une "forme alternative". Voir le tableau suivant. |
Caractère de conversion | Comment # affecte arg |
---|---|
c,s,d,j,u | Aucun effet. |
0 | 0 sera ajouté à un arg différent de zéro. |
x ou X | 0x (ou 0X) sera ajouté à arg. |
e, E, ou f | Le résultat contiendra toujours un point décimal même si aucun chiffre ne suit le point. Normalement, un point décimal n'apparaît dans ces résultats que s'il est suivi d'un chiffre. |
g ou G | Identique à e et E, avec en plus que les zéros de fin ne seront pas supprimés. |
Spécificateur de largeur | Comment la largeur de sortie est affectée |
---|---|
n | Au moins n caractères sont affichés. Si la valeur de sortie comporte moins de n caractères, la sortie est remplie de blancs (remplissage à droite si - indicateur donné, remplissage à gauche sinon). |
On | Au moins n caractères sont affichés. Si la valeur de sortie comporte moins de n caractères, elle est remplie à gauche de zéros. |
* | La liste de paramètres fournit le spécificateur de largeur, devant précéder le paramètre actuel en cours de formatage. |
Spécificateur de précision | Comment la précision de sortie est affectée |
---|---|
(aucun donné) | Précision définie par défaut : par défaut = 1 pour les types d, i, 0, U, x, X par défaut = 6 pour les types e, E, f par défaut = tous les chiffres significatifs pour les types g, G par défaut = affiche jusqu'au premier caractère nul pour les types s ; aucun effet sur les types c. |
.0 | Pour les types d, i, 0, U, x, la précision est définie sur la valeur par défaut ; pour les types e, E, f, aucun point décimal n'est affiché. |
.n | n caractères ou n décimales sont imprimés. Si la valeur de sortie comporte plus de n caractères, la sortie peut être tronquée ou arrondie. (Que cela se produise ou non dépend du caractère de type.) |
* | La liste de paramètres fournit le spécificateur de précision, devant précéder le paramètre actuel en cours de formatage. |
Caractère de conversion | Comment la spécification de précision (.n) affecte la conversion |
---|---|
d | .n spécifie qu'au moins n chiffres |
i | seront affichés. Si le paramètre d'entrée |
o | a moins de n chiffres, la sortie |
u | la valeur est complétée à gauche par des zéros. |
x | Si le paramètre d'entrée a plus de n |
X | chiffres, la valeur de sortie n'est pas tronquée. |
e | .n spécifie que n caractères seront |
E | être affiché après la virgule décimale, et |
f | le dernier chiffre affiché est arrondi. |
g | .n spécifie qu'au plus n significatif. |
G | chiffres seront affichés. |
c | .n n'a aucun effet sur la sortie. |
s | .n spécifie que pas plus de n caractères seront affichés |
F et N réinterprètent l'arg d'entrée. Normalement, l'arg pour une conversion %p, %s ou %n est un pointeur de la taille par défaut pour le modèle de mémoire. F dit "interpréter arg comme un pointeur éloigné (far)". N dit "interpréter arg comme un pointeur court (near)".
h, I et L remplacent tous deux la taille par défaut des paramètres d'entrée de données numériques : l et L s'appliquent à l'entier (d, i, o, U, x, X) et à la virgule flottante (e, E, f, g, et G) types, tandis que h s'applique uniquement aux types entiers. Ni h ni l n'affectent les types de caractère (c, s) ou de pointeur (p, n).
Modificateur de taille d'entrée | Comment arg est interprété |
---|---|
F | arg est lu comme un pointeur éloigné (far). |
N | arg est lu comme un pointeur proche. N ne peut être utilisé avec aucune conversion dans un modèle huge. |
h | arg est interprété comme un entier court pour d, i, 0, U, X ou X. |
l | arg est interprété comme un entier long pour d, i, 0, U, X ou X ; arg est interprété comme un double pour e, E, f, g ou G. |
L | arg est interprété comme un double long pour e, E, f, g ou G |
Exemple
Voici divers exemple d'affichages de format :
- #include <stdio.h>
- #include <stdlib.h>
-
- int main() {
- printf("Boujour!\n");
- printf("Entier %%i = %i\n",15);
- printf("Hexadecimal %%x = %x\n",16);
- printf("Octal %%o = %o\n",16);
- printf("Chaine de caracteres %%s = %s\n","message");
- printf("Reel %%f = %f\n",123.45);
- printf("Reel %%f = %.2f\n",123.45);
- return 0;
- }
on obtiendra le résultat suivant :
Boujour!Entier %i = 15
Hexadecimal %x = 10
Octal %o = 20
Chaine de caracteres %s = message
Reel %f = 123.450000
Reel %f = 123.45
Voir également
Langage de programmation - Turbo C - Référence de fonctions - fprintf
Langage de programmation - Turbo C - Référence de fonctions - fread
Langage de programmation - Turbo C - Référence de fonctions - fscanf
Langage de programmation - Turbo C - Référence de fonctions - fwrite
Langage de programmation - Turbo C - Référence de fonctions - scanf
Référence
Turbo C: Mode d'emploi, Edition Sybex, Gabrielle Lechner, 1988, ISBN: 2-7361-0423-4, page 215.