.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1999, Andries E. Brouwer .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH printf 3 "16 février 2026" "Linux man\-pages 6.18" .SH NOM printf, fprintf, dprintf, vprintf, vfprintf, vdprintf, \- formatted output conversion .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP,\ \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint printf(const char *restrict \fP\fIformat\fP\fB, ...);\fP \fBint fprintf(FILE *restrict \fP\fIstream\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB, ...);\fP \fBint dprintf(int \fP\fIfd\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB, ...);\fP .P \fBint vprintf(const char *restrict \fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP \fBint vfprintf(FILE *restrict \fP\fIstream\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP \fBint vdprintf(int \fP\fIfd\fP\fB,\fP \fB const char *restrict \fP\fIformat\fP\fB, va_list \fP\fIap\fP\fB);\fP .fi .P .RS -4 Exigences de macros de test de fonctionnalités pour la glibc (consulter \fBfeature_test_macros\fP(7)) : .RE .P \fBdprintf\fP(), \fBvdprintf\fP() : .nf Depuis la glibc 2.10 : _POSIX_C_SOURCE >= 200809L Avant la glibc 2.10 : _GNU_SOURCE .fi .SH DESCRIPTION The functions in the \fBprintf\fP() family produce output according to a \fIformat\fP as described below. The functions \fBprintf\fP() and \fBvprintf\fP() write output to \fIstdout\fP, the standard output stream; \fBfprintf\fP() and \fBvfprintf\fP() write output to the given output \fIstream\fP. .P La fonction \fBdprintf\fP() est équivalente à \fBfprintf\fP() si ce n'est qu'elle écrit dans un descripteur de fichier \fIfd\fP plutôt que dans un flux \fBstdio\fP(3). .P The functions \fBvprintf\fP(), \fBvfprintf\fP(), \fBvdprintf\fP() are equivalent to the functions \fBprintf\fP(), \fBfprintf\fP(), \fBdprintf\fP(), respectively, except that they are called with a \fIva_list\fP instead of a variable number of arguments. These functions do not call the \fIva_end\fP macro. Because they invoke the \fIva_arg\fP macro, the value of \fIap\fP is undefined after the call. See \fBstdarg\fP(3). .P Toutes ces fonctions écrivent leurs sorties sous le contrôle d'une chaîne de \fIformat\fP qui indique les conversions à apporter aux arguments suivants (ou accessibles à travers les fonctions d'argument de taille variable de \fBstdarg\fP(3)). .SS "CHAÎNE DE FORMAT" La chaîne de format est une chaîne de caractères, commençant et se terminant dans son état de décalage initial, si présent. La chaîne de format est composée de zéro ou plus d'indicateurs\ : les caractères ordinaires (différents de \fB%\fP), qui sont copiés sans modification sur la sortie, et les spécifications de conversion, qui chacune recherche zéro ou plus d’arguments suivants. Les spécifications de conversion sont introduites par le caractère \fB%\fP et se terminent par un \fIindicateur de conversion\fP. Entre eux peuvent se trouver (dans l'ordre), zéro ou plusieurs \fIattributs\fP, une valeur optionnelle de \fIlargeur minimale de champ\fP, une valeur optionnelle de \fIprécision\fP et un éventuel \fImodificateur de longueur\fP. .P La syntaxe générale d'un format de conversion est : .P .in +4n .nf %[argument$][flags][width][.precision][length modifier]conversion .fi .in .P Les arguments doivent correspondre correctement (après les promotions de types) avec les indicateurs de conversion. Par défaut les arguments sont pris dans l'ordre indiqué, où chaque «\ *\ » (voir \fILargeur de champ\fP et \fIPrécision\fP ci\-après) et chaque indicateur de conversion réclament un nouvel argument (et l'insuffisance d’arguments est une erreur). On peut aussi préciser explicitement quel argument prendre, en écrivant, à chaque conversion, «\ %m$\ » au lieu de «\ %\ », et «\ *m$\ » au lieu de «\ *\ ». L'entier décimal \fIm\fP indique la position dans la liste d'arguments, l'indexation commençant à \fB1\fP. Ainsi, .P .in +4n .EX printf("%*d", largeur, numéro); .EE .in .P et .P .in +4n .EX printf("%2$*1$d", largeur, numéro); .EE .in .P sont équivalents. La seconde notation permet de répéter plusieurs fois le même argument. Le standard C99 n'autorise pas le style utilisant «\ $\ », qui provient des Spécifications UNIX Single. Si le style avec «\ $\ » est utilisé, il faut l'employer pour toutes conversions prenant un argument et pour tous les arguments de largeur et de précision, mais on peut le mélanger avec des formats «\ %%\ » qui ne consomment pas d'arguments. Il ne doit pas y avoir de sauts dans les numéros des arguments spécifiés avec «\ $\ ». Par exemple, si les arguments 1 et 3 sont spécifiés, l'argument 2 doit aussi être mentionné quelque part dans la chaîne de format. .P Pour certaines conversions numériques, un caractère de séparation décimale (le point par défaut) est utilisé, ainsi qu'un caractère de regroupement par millier. Les véritables caractères dépendent de la valeur de \fBLC_NUMERIC\fP dans la locale (consultez \fBsetlocale\fP(3)). La localisation POSIX utilise «\ \&.\ » comme séparateur décimal, et n'a pas de caractère de regroupement. Ainsi, .P .in +4n .EX printf("%\[aq].2f", 1234567.89); .EE .in .P s'affichera comme « 1234567.89 » dans la localisation POSIX, « 1\ 234\ 567,89 » en localisation fr_FR, et « 1.234.567,89 » en localisation da_DK. .SS "Caractères d'attribut" Le caractère % peut être éventuellement suivi par zéro ou plusieurs des attributs suivants\ : .TP \fB#\fP Indique que la valeur doit être convertie en une autre forme. Pour les conversions \fBo\fP le premier caractère de la chaîne de sortie vaudra zéro (en ajoutant un préfixe \fB0\fP si ce n'est pas déjà un zéro). Pour les conversions \fBx\fP et \fBX\fP un résultat non nul reçoit le préfixe «\ 0x\ » (ou «\ 0X\ » pour l'indicateur \fBX\fP). Pour les conversions \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP et \fBG\fP, le résultat contiendra toujours un point décimal même si aucun chiffre ne le suit (normalement, un point décimal n'est présent avec ces conversions que si des décimales le suivent). Pour les conversions \fBg\fP et \fBG\fP, les zéros en fin ne sont pas éliminés, contrairement au comportement habituel. Pour \fBm\fP, si \fIerrno\fP contient un code d'erreur valable, la sortie de \fIstrerrorname_np(errno)\fP est affichée ; autrement, la valeur stockée dans \fIerrno\fP est affichée sous la forme d'un nombre décimal. Pour les autres conversions, le résultat est indéfini. .TP \fB\&0\fP Indique le remplissage avec des zéros. Pour les conversions \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP, \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP et \fBG\fP, la valeur est complétée à gauche par des zéros plutôt que par des espaces. Si les attributs \fB\&0\fP et \fB\-\fP apparaissent ensemble, l'attribut \fB\&0\fP est ignoré. Si une précision est fournie avec une conversion entière (\fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP et \fBX\fP), l'attribut \fB\&0\fP est ignoré. Pour les autres conversions, le comportement est indéfini. .TP \fB\-\fP Indique que la valeur convertie doit être justifiée sur la limite gauche du champ (par défaut elle l'est à droite). Les valeurs sont complétées à droite par des espaces, plutôt qu'à gauche par des zéros ou des espaces. Un attribut \fB\-\fP surcharge un attribut \fB\&0\fP si les deux sont fournis. .TP \fB\[aq] \[aq]\fP (une espace) Un blanc indique qu'une espace doit être laissée avant un nombre positif (ou une chaîne vide) produit par une conversion signée .TP \fB+\fP Un signe (\fB+\fP ou \fB\-\fP) doit toujours être placé avant un nombre produit par une conversion signée. Par défaut, un signe n'est utilisé que pour les valeurs négatives. Un attribut \fB+\fP surcharge un attribut «\ espace\ » si les deux sont fournis. .P The five flag characters above are defined in the C99 standard. POSIX specifies one further flag character. .TP \fB\[aq]\fP For decimal conversion (\fBi\fP, \fBd\fP, \fBu\fP, \fBf\fP, \fBF\fP, \fBg\fP, \fBG\fP) the output is to be grouped with thousands' grouping characters as a \fInon\-monetary\fP quantity. Misleadingly, this isn't necessarily every thousand: for example Karbi ("mjw_IN"), groups its digits into 3 once, then 2 repeatedly. Compare \fBlocale\fP(7) \fIgrouping\fP and \fIthousands_sep\fP, contrast with \fImon_grouping\fP/\fImon_thousands_sep\fP and \fBstrfmon\fP(3). This is a no\-op in the default "C" locale. .P La glibc 2.2 ajoute un caractère d'attribut supplémentaire. .TP \fBI\fP .\" outdigits keyword in locale file Pour les conversions décimales (\fBi\fP, \fBd\fP et \fBu\fP), la sortie emploie les chiffres de la localisation alternative s'il y en a une. Par exemple, depuis la glibc 2.2.3, cela donnera des chiffres arabes pour la localisation perse («\ fa_IR\ »). .SS "Largeur de champ" An optional decimal digit string (with nonzero first digit) specifying a minimum field width. If the converted value has fewer characters than the field width, it will be padded with spaces on the left (or right, if the left\-adjustment flag has been given). Instead of a decimal digit string one may write "*" or "*m$" (for some decimal integer \fIm\fP) to specify that the field width is given in the next argument, or in the \fIm\fP\-th argument, respectively, which must be of type \fIint\fP. A negative field width is taken as a \[aq]\-\[aq] flag followed by a positive field width. In no case does a nonexistent or small field width cause truncation of a field; if the result of a conversion is wider than the field width, the field is expanded to contain the conversion result. .SS Précision An optional precision, in the form of a period (\[aq].\[aq]) followed by an optional decimal digit string. Instead of a decimal digit string one may write "*" or "*m$" (for some decimal integer \fIm\fP) to specify that the precision is given in the next argument, or in the \fIm\fP\-th argument, respectively, which must be of type \fIint\fP. If the precision is given as just \[aq].\[aq], the precision is taken to be zero. A negative precision is taken as if the precision were omitted. This gives the minimum number of digits to appear for \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP, and \fBX\fP conversions, the number of digits to appear after the radix character for \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, and \fBF\fP conversions, the maximum number of significant digits for \fBg\fP and \fBG\fP conversions, or the maximum number of characters to be printed from a string for \fBs\fP and \fBS\fP conversions. .SS "Modificateur de longueur" Ici, une « conversion d’entier » correspond à \fBd\fP, \fBi\fP, \fBo\fP, \fBu\fP, \fBx\fP ou \fBX\fP. .TP \fBhh\fP La conversion d’entier suivante correspond à un \fIsigned\ char\fP ou à un \fIunsigned\ char\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un argument \fIsigned\ char\fP. .TP \fBh\fP La conversion d’entier suivante correspond à un \fIshort\fP ou à un \fIunsigned\ short\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un argument \fIshort\fP. .TP \fBl\fP (lettre l) La conversion d’entier suivante correspond à un argument \fIlong\fP ou \fIunsigned\ long\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un argument \fIlong\fP, ou la conversion \fBc\fP suivante correspond à un argument \fIwint_t\fP, ou encore la conversion \fBs\fP suivante correspond à un pointeur sur un argument \fIwchar_t\fP. Lors de la conversion \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP ou \fBG\fP suivante, ce modificateur de longueur est ignoré (C99 ; pas dans SUSv2). .TP \fBll\fP (lettre l en double). La conversion d’entier suivante correspond à un \fIlong\ long\fP ou à un \fIunsigned\ long\ long\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un \fIlong\ long\fP. .TP \fBq\fP Un synonyme de \fBll\fP. Il s'agit d'une extension non standard, dérivée de BSD ; évitez son utilisation dans du nouveau code. .TP \fBL\fP La conversion \fBa\fP, \fBA\fP, \fBe\fP, \fBE\fP, \fBf\fP, \fBF\fP, \fBg\fP ou \fBG\fP suivante correspond à un argument \fIlong\ double\fP (C99 autorise %LF mais pas SUSv2). .TP \fBj\fP La conversion d’entier suivante correspond à un argument \fIintmax_t\fP ou \fIuintmax_t\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un argument \fIintmax_t\fP. .TP \fBw\fP\fIN\fP A following integer conversion corresponds to an integer of a width of \fIN\fP bits (C23). .TP \fBz\fP La conversion d’entier suivante correspond à un argument \fIsize_t\fP ou \fIssize_t\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un argument \fIsize_t\fP. .TP \fBZ\fP Un synonyme non standard de \fBz\fP qui précède l'apparition de \fBz\fP. Ne pas l'utiliser dans du nouveau code. .TP \fBt\fP La conversion d’entier suivante correspond à un argument \fIptrdiff_t\fP, ou la conversion \fBn\fP suivante correspond à un pointeur sur un argument \fIptrdiff_t\fP. .P SUSv3 mentionne tous les modificateurs précédents à l'exception des extensions non standard. Les spécifications SUSv2 ne mentionnent que les modificateurs de longueur \fBh\fP (dans \fBhd\fP, \fBhi\fP, \fBho\fP, \fBhx\fP, \fBhX\fP et \fBhn\fP), \fBl\fP (dans \fBld\fP, \fBli\fP, \fBlo\fP, \fBlx\fP, \fBlX\fP, \fBln\fP, \fBlc\fP et \fBls\fP) et \fBL\fP (dans \fBLe\fP, \fBLE\fP, \fBLf\fP, \fBLg\fP et \fBLG\fP). .P .\" En tant qu’extension non standard, l'implémentation GNU traite \fBll\fP et \fBL\fP comme des synonymes de façon à ce qu'il soit possible, par exemple, d'écrire \fBllg\fP (comme synonyme conforme aux standards de \fBLg\fP) et \fBLd\fP (comme synonyme conforme aux standards de \fBlld\fP). Une telle utilisation n'est pas portable. .SS "Indicateurs de conversion" Un caractère indique le type de conversion à apporter. Les indicateurs de conversion et leurs significations sont\ : .TP \fBd\fP, \fBi\fP L'argument \fIint\fP est converti en un chiffre décimal signé. La précision, si elle est mentionnée, correspond au nombre minimal de chiffres qui doivent apparaître. Si la conversion fournit moins de chiffres, le résultat est rempli à gauche avec des zéros. Par défaut la précision vaut \fB1\fP. Lorsque \fB0\fP est converti avec une précision valant \fB0\fP, la sortie est vide. .TP \fBo\fP, \fBu\fP, \fBx\fP, \fBX\fP L'argument \fIunsigned int\fP est converti en un chiffre octal non signé (\fBo\fP), un chiffre décimal non signé (\fBu\fP) ou un chiffre hexadécimal non signé (\fBx\fP et \fBX\fP). Les lettres \fBabcdef\fP sont utilisées pour les conversions avec \fBx\fP, les lettres \fBABCDEF\fP sont utilisées pour les conversions avec \fBX\fP. La précision, si elle est indiquée, donne un nombre minimal de chiffres à faire apparaître. Si la valeur convertie nécessite moins de chiffres, elle est complétée à gauche avec des zéros. La précision par défaut vaut \fB1\fP. Lorsque \fB0\fP est converti avec une précision valant \fB0\fP, la sortie est vide. .TP \fBe\fP, \fBE\fP L'argument, de type \fIdouble\fP, est arrondi et présenté avec la notation scientifique [\-]c\fB\&.\fPccc\fBe\fP\(+-cc dans lequel se trouve un chiffre (qui n'est pas nul si l'argument n'est pas nul) avant le point, puis un nombre de décimales égal à la précision demandée. Si la précision n'est pas indiquée, l'affichage contiendra 6 décimales. Si la précision vaut zéro, il n'y a pas de point décimal. Une conversion \fBE\fP utilise la lettre \fBE\fP (plutôt que \fBe\fP) pour introduire l'exposant. Celui\-ci contient toujours au moins deux chiffres. Si la valeur affichée est nulle, son exposant est 00. .TP \fBf\fP, \fBF\fP L'argument, de type \fIdouble\fP, est arrondi et présenté avec la notation classique [\-]ccc\fB\&.\fPccc, où le nombre de décimales est égal à la précision réclamée. Si la précision n'est pas indiquée, l'affichage se fera avec 6 décimales. Si la précision vaut zéro, aucun point n'est affiché. Lorsque le point est affiché, il y a toujours au moins un chiffre devant. .IP SUSv2 ne mentionne pas \fBF\fP et dit qu'une représentation des chaînes de caractères pour l'infini ou NaN devrait être disponible. SUSv3 ajoute l'indicateur \fBF\fP. La norme C99 précise «\ [\-]inf\ » ou «\ [\-]infinity\ » pour les infinis, et une chaîne commençant par «\ nan\ » pour NaN dans le cas d'une conversion \fBf\fP, et les chaînes «\ [\-]INF\ », «\ [\-]INFINITY\ » ou «\ NAN*\ » pour une conversion \fBF\fP. .TP \fBg\fP, \fBG\fP L'argument, de type \fIdouble\fP, est converti en style \fBf\fP ou \fBe\fP (\fBF\fP ou \fBE\fP pour la conversion \fBG\fP). La précision indique le nombre de décimales significatives. Si la précision est absente, une valeur par défaut de \fB6\fP est utilisée. Si la précision vaut \fB0\fP, elle est considérée comme valant \fB1\fP. La notation scientifique \fBe\fP est utilisée si l'exposant est inférieur à \-4 ou supérieur ou égal à la précision demandée. Les zéros en fin de partie décimale sont supprimés. Un point décimal n'est affiché que s'il est suivi d'au moins un chiffre. .TP \fBa\fP, \fBA\fP (C99; not in SUSv2, but added in SUSv3) For \fBa\fP conversion, the \fIdouble\fP argument is converted to hexadecimal notation (using the letters abcdef) in the style [\-]\fB0x\fPh\fB\&.\fPhhhh\fBp\fP\(+-d; for \fBA\fP conversion the prefix \fB0X\fP, the letters ABCDEF, and the exponent separator \fBP\fP is used. There is one hexadecimal digit before the radix point, and the number of digits after it is equal to the precision. The default precision suffices for an exact representation of the value if an exact representation in base 2 exists and otherwise is sufficiently large to distinguish values of type \fIdouble\fP. The digit before the radix point is unspecified for nonnormalized numbers, and nonzero but otherwise unspecified for normalized numbers. The exponent, \fId\fP, is the appropriate exponent of 2 expressed as a decimal integer; it always contains at least one digit; if the value is zero, the exponent is 0. .TP \fBc\fP S'il n'y a pas de modificateur \fBl\fP, l'argument, de type \fIint\fP, est converti en un \fIunsigned\ char\fP et le caractère correspondant est affiché. Si un modificateur \fBl\fP est présent, l'argument de type \fIwint_t\fP (caractère large) est converti en séquence multioctet par un appel à \fBwcrtomb\fP(3), avec un état de conversion débutant dans l'état initial. La chaîne multioctet résultante est écrite. .TP \fBs\fP If no \fBl\fP modifier is present: the \fIconst char\ *\fP argument is expected to be a pointer to an array of character type (pointer to a string). Characters from the array are written up to (but not including) a terminating null byte (\[aq]\[rs]0\[aq]); if a precision is specified, no more than the number specified are written. If a precision is given, no null byte need be present; if the precision is not specified, or is greater than the size of the array, the array must contain a terminating null byte. .IP Si un modificateur \fBl\fP est présent, l'argument de type \fIconst wchar_t\ *\fP est supposé être un pointeur sur un tableau de caractères larges. Les caractères larges du tableau sont convertis en une séquence de caractères multioctets (chacun par un appel de \fBwcrtomb\fP(3), avec un état de conversion dans l'état initial avant le premier caractère large), cela jusqu'au caractère large NULL final compris. Les caractères multioctets résultants sont écrits jusqu'à l’octet NULL final (non compris). Si une précision est fournie, il n'y a pas plus d'octets écrits que la précision indiquée, mais aucun caractère multioctet n'est écrit partiellement. Remarquez que la précision concerne le nombre d'\fIoctets\fP écrits et non pas le nombre de \fIcaractères larges\fP ou de \fIpositions d'écran\fP. Le tableau doit contenir un caractère large NULL final, sauf si une précision est indiquée et qu'il est suffisamment petit pour que le nombre d'octets écrits le remplisse avant la fin du tableau. .TP \fBC\fP (Ni dans C99, ni dans C11, mais dans SUSv2, SUSv3 et SUSv4). Synonyme de \fBlc\fP. Ne pas utiliser. .TP \fBS\fP (Ni dans C99, ni dans C11, mais dans SUSv2, SUSv3 et SUSv4). Synonyme de \fBls\fP. Ne pas utiliser. .TP \fBp\fP L'argument pointeur, du type \fIvoid\ *\fP est affiché en hexadécimal, comme avec \fB%#x\fP ou \fB%#lx\fP. .TP \fBn\fP Le nombre de caractères écrits jusqu'à présent est stocké dans l'entier pointé par l'argument correspondant. Cet argument doit être un \fIint *\fP ou une variante dont la taille correspond au modificateur de longueur d'entier optionnellement fourni. Aucun argument n'est converti (cet indicateur n'est pas pris en charge par la bibliothèque C Bionic). Le comportement n'est pas défini si la spécification de conversion comporte un drapeau, une longueur de champ ou une précision. .TP \fBm\fP (glibc extension; supported by uClibc and musl, and on Android from API level 29.) Print output of \fIstrerror(errno)\fP (or \fIstrerrorname_np(errno)\fP in the alternate form). No argument is required. .TP \fB%\fP Un caractère «\ %\ » est écrit. Il n'y a pas de conversion. L'indicateur complet est «\ %%\ ». .SH "VALEUR RENVOYÉE" En cas de succès, ces fonctions renvoient le nombre d'octets affichés (sans compter l'octet NULL final utilisé pour terminer les sorties dans les chaînes). .P On error, a negative value is returned, and \fIerrno\fP is set to indicate the error. .SH ERREURS See \fBwrite\fP(2) and \fBputwc\fP(3). In addition, the following error may occur: .TP \fBEOVERFLOW\fP The value to be returned is greater than \fBINT_MAX\fP. .P The \fBdprintf\fP() function may fail additionally if: .TP \fBEBADF\fP The \fIfd\fP argument is not a valid file descriptor. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBprintf\fP(), \fBfprintf\fP(), \fBvprintf\fP(), \fBvfprintf\fP() T} Sécurité des threads MT\-Safe locale .TE .SH NORMES .TP \fBfprintf\fP() .TQ \fBprintf\fP() .TQ \fBvprintf\fP() .TQ \fBvfprintf\fP() C11, POSIX.1\-2008. .TP \fBdprintf\fP() .TQ \fBvdprintf\fP() GNU, POSIX.1\-2008. .SH HISTORIQUE .TP \fBfprintf\fP() .TQ \fBprintf\fP() .TQ \fBvprintf\fP() .TQ \fBvfprintf\fP() C89, POSIX.1\-2001. .TP \fBdprintf\fP() .TQ \fBvdprintf\fP() GNU, POSIX.1\-2008. .P Issue 4 of the X/Open Portability Guide (SUSv1, 1994) adds \fB\[aq]\fP. .P .\" Linux libc4 knows about the five C standard flags. .\" It knows about the length modifiers \f[B]h\f[], \f[B]l\f[], \f[B]L\f[], .\" and the conversions .\" \f[B]c\f[], \f[B]d\f[], \f[B]e\f[], \f[B]E\f[], \f[B]f\f[], \f[B]F\f[], .\" \f[B]g\f[], \f[B]G\f[], \f[B]i\f[], \f[B]n\f[], \f[B]o\f[], \f[B]p\f[], .\" \f[B]s\f[], \f[B]u\f[], \f[B]x\f[], and \f[B]X\f[], .\" where \f[B]F\f[] is a synonym for \f[B]f\f[]. .\" Additionally, it accepts \f[B]D\f[], \f[B]O\f[], and \f[B]U\f[] as synonyms .\" for \f[B]ld\f[], \f[B]lo\f[], and \f[B]lu\f[]. .\" (This is bad, and caused serious bugs later, when .\" support for \f[B]%D\f[] disappeared.) .\" No locale-dependent radix character, .\" no thousands' separator, no NaN or infinity, no "%m$" and "*m$". .\" .P .\" Linux libc5 knows about the five C standard flags and the \[aq] flag, .\" locale, "%m$" and "*m$". .\" It knows about the length modifiers \f[B]h\f[], \f[B]l\f[], \f[B]L\f[], .\" \f[B]Z\f[], and \f[B]q\f[], but accepts \f[B]L\f[] and \f[B]q\f[] .\" both for \f[I]long double\f[] and for \f[I]long long\f[] (this is a bug). .\" It no longer recognizes \f[B]F\f[], \f[B]D\f[], \f[B]O\f[], and \f[B]U\f[], .\" but adds the conversion character .\" .BR m , .\" which outputs .\" .IR strerror(errno) . .\" .P .\" glibc 2.0 adds conversion characters \f[B]C\f[] and \f[B]S\f[]. .\" .P La bibliothèque glibc 2.1 ajoute les modificateurs de longueur \fBhh\fP, \fBj\fP, \fBt\fP et \fBz\fP et les caractères de conversion \fBa\fP et \fBA\fP. .P La bibliothèque glibc 2.2 ajoute le caractère de conversion \fBF\fP avec la sémantique C99 et le caractère d'attribut \fBI\fP. .P .\" .SH HISTORY .\" UNIX V7 defines the three routines .\" .BR printf (), .\" .BR fprintf (), .\" .BR sprintf (), .\" and has the flag \-, the width or precision *, the length modifier l, .\" and the conversions doxfegcsu, and also D,O,U,X as synonyms for ld,lo,lu,lx. .\" This is still true for 2.9.1BSD, but 2.10BSD has the flags .\" #, + and and no longer mentions D,O,U,X. .\" 2.11BSD has .\" .BR vprintf (), .\" .BR vfprintf (), .\" .BR vsprintf (), .\" and warns not to use D,O,U,X. .\" 4.3BSD Reno has the flag 0, the length modifiers h and L, .\" and the conversions n, p, E, G, X (with current meaning) .\" and deprecates D,O,U. .\" 4.4BSD introduces the functions .\" .BR snprintf () .\" and .\" .BR vsnprintf (), .\" and the length modifier q. .\" FreeBSD also has functions .\" .BR asprintf () .\" and .\" .BR vasprintf (), .\" that allocate a buffer large enough for .\" .BR sprintf (). .\" In glibc there are functions .\" .BR dprintf () .\" and .\" .BR vdprintf () .\" that print to a file descriptor instead of a stream. glibc 2.35 donne une signification à la forme alternative (\fB#\fP) du spécificateur de conversion \fBm\fP, c'est\-à\-dire \fI%#m\fP. .SH BOGUES .\" .P .\" Some floating-point conversions under early libc4 .\" caused memory leaks. Un code tel que \fBprintf(\fP\fItoto\fP\fB);\fP indique souvent un bogue, car \fItoto\fP peut contenir un caractère «\ %\ ». Si \fItoto\fP vient d'une saisie non sécurisée, il peut contenir \fB%n\fP, ce qui autorise \fBprintf\fP() à écrire dans la mémoire, et crée une faille de sécurité. .SH EXEMPLES Pour afficher \fIPi\fP avec cinq décimales\ : .P .in +4n .EX #include #include fprintf(stdout, "pi = %.5f\[rs]n", 4 * atan(1.0)); .EE .in .P Pour afficher une date et une heure sous la forme «\ Sunday, July 3, 23:15\ », où \fIjour_semaine\fP et \fImois\fP sont des pointeurs sur des chaînes\ : .P .in +4n .EX #include fprintf(stdout, "%s, %s %d, %.2d:%.2d\[rs]n", weekday, month, day, hour, min); .EE .in .P De nombreux pays utilisent un format de date différent, comme jour\-mois\-année. Une version internationale doit donc être capable d'afficher les arguments dans l'ordre indiqué par le format\ : .P .in +4n .EX #include fprintf(stdout, format, jour_semaine, mois, jour, heure, min); .EE .in .P où le \fIformat\fP dépend de la localisation et peut permuter les arguments. Avec la valeur : .P .in +4n .EX "%1$s, %3$d.\& %2$s, %4$d:%5$.2d\[rs]n" .EE .in .P one might obtain "Sonntag, 3.\& Juli, 10:02". .SH "VOIR AUSSI" \fBprintf\fP(1), \fBasprintf\fP(3), \fBputs\fP(3), \fBscanf\fP(3), \fBsetlocale\fP(3), \fBsnprintf\fP(3), \fBstrfromd\fP(3), \fBwcrtomb\fP(3), \fBwprintf\fP(3), \fBlocale\fP(5) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Frédéric Hantrais , Grégoire Scano et Jean-Pierre Giraud . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .