Syntaxe de spécification de format : fonctions printf et wprintf

Décrit la syntaxe des arguments au format de chaîne à printf, wprintf, et aux fonctions associés. Des versions plus sécurisées de ces fonctions sont disponibles ; pour plus d'informations, consultez Fonctionnalités de sécurité dans le CRT. Pour plus d'informations sur les différentes fonctionnalités, consultez la documentation de ces fonctions spécifiques. Pour obtenir la liste de ces fonctions, consultez E/S de flux.

Une spécification de format, qui se compose de champs facultatif et obligatoires, a la forme suivante :

%[indicateurs] [largeur] [.précision] [{h | l | ll | w | I | I32 | I64}] type

Chaque champ de la spécification de format est un caractère ou un nombre qui represente un spécificateur particulier d'option de mise en forme ou de conversion. Le caractère obligatoire type précise le type de conversion devant être appliqué à un argument. Les flagsfacultatif, width, et les champs precision contrôlent les aspects supplémentaires de format. Une spécification de format de base contient uniquement le signe de pourcentage et un caractère type — par exemple, %s, qui spécifie une conversion de chaînes. Si un signe de pourcentage est suivi d'un caractère qui n'a aucune signification comme champ de format, le caractère est copié vers la sortie inchangé. Pour afficher un signe de pourcentage, utilisez %%.

Les champs de la spécification de format contrôlent les aspects suivants de la conversion et le format d'argument :

  • type
    Caractère requis de spécificateur de conversion qui détermine si l' argument associé est interprèté comme un caractère, une chaîne, un entier, ou un nombre à virgule flottante. Pour plus d'informations, consultez Caractères du champ de type printf.

  • flags
    Caractère ou caractères facultatif qui contrôlent la justification de sortie de la commande et de la sortie des signes, des vides, des zéros non significatifs, des décimales, et des préfixes octaux et hexadécimaux. Pour plus d'informations, consultez Directives de balise. Plusieurs indicateurs peuvent apparaître dans une spécification de format, et les indicateurs peuvent apparaître dans n'importe quel ordre.

  • width
    Nombre décimal facultatif qui spécifie le nombre minimal de caractères qui sont envoyés. Pour plus d'informations, consultez Spécification de largeur printf.

  • precision
    Nombre décimal facultatif qui spécifie le nombre maximal de caractères qui sont imprimés pour les chaînes, le nombre de chiffres significatifs ou le nombre de chiffres après le caractère de virgule décimale pour les valeurs à virgule flottante, ou le nombre minimal de chiffres qui sont imprimés pour les valeurs entières. Pour plus d'informations, consultez « Comment les valeurs de précision influencent le type » dans Spécifications de précision.

  • h | l | ll | w | I | I32 | I64
    Préfixes facultatifs pour le type qui spécifient la taille de l'argument correspondant. Pour plus d'informations, consultez "préfixes de taille » dans Spécification de taille.

Note de sécuritéNote de sécurité

Assurez-vous que les chaînes de spécification de format ne sont pas définies par l'utilisateur.Par exemple, imaginez un programme qui invite l'utilisateur à entrer un nom et enregistrer l'entrée dans une variable chaîne nommée name.Pour afficher name, n'effectuez pas cette opération :

printf( name ); /* Danger! If name contains "%s", program will crash */

Au lieu de cela, procédez comme suit :

printf( "%s", name );

Voir aussi

Référence

printf, _printf_l, wprintf, _wprintf_l

printf_s, _printf_s_l, wprintf_s, _wprintf_s_l

Paramètres positionnels printf_p

Directives de balise

Spécification de largeur printf

Spécifications de précision

Spécification de taille

Caractères du champ de type printf