printf
, , _printf_l
wprintf
, ,_wprintf_l
Imprime une sortie mise en forme dans le flux de sortie standard. Des versions plus sécurisées de ces fonctions sont disponibles ; voir , , wprintf_s
_printf_s_l
, _wprintf_s_l
.printf_s
Syntaxe
int printf(
const char *format [,
argument]...
);
int _printf_l(
const char *format,
_locale_t locale [,
argument]...
);
int wprintf(
const wchar_t *format [,
argument]...
);
int _wprintf_l(
const wchar_t *format,
_locale_t locale [,
argument]...
);
Paramètres
format
Contrôle de format.
argument
Arguments facultatifs.
locale
Paramètres régionaux à utiliser.
Valeur retournée
Retourne le nombre de caractères imprimés ou une valeur négative si une erreur se produit. Si format
a la valeur NULL
, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, la fonction retourne -1 et définit errno
avec la valeur EINVAL
. Si EOF
(0xFFFF) est rencontré dans argument
, la fonction retourne -1.
Pour plus d’informations sur errno
les codes d’erreur, consultezerrno
, , _doserrno
_sys_errlist
et _sys_nerr
.
Notes
La fonction printf
met en forme et imprime une série de caractères et de valeurs dans le flux de sortie standard, stdout
. Si les arguments suivent la chaîne format
, la chaîne format
doit contenir des spécifications qui déterminent le format de sortie des arguments. printf
et fprintf
se comportent de la même façon, sauf que l’écriture printf
de la sortie au stdout
lieu d’une destination de type FILE
.
wprintf
est une version à caractères larges de printf
; format
est une chaîne de caractères larges. wprintf
et printf
se comportent de la même façon si le flux est ouvert en mode ANSI. printf
ne prend pas en charge la sortie vers un flux UNICODE pour l’instant.
Les versions de ces fonctions avec le suffixe _l
sont identiques, sauf qu'elles utilisent les paramètres régionaux passés au lieu des paramètres régionaux du thread actuel.
L’argument format
se compose de caractères ordinaires, de séquences d’échappement et (si des arguments suivent format
) de spécifications de format. Les caractères ordinaires et les séquences d’échappement sont copiés dans stdout
dans leur ordre d’apparition. Par exemple, la ligne suivante :
printf("Line one\n\t\tLine two\n");
génère cette sortie :
Line one
Line two
Les spécifications de format commencent toujours par un symbole de pourcentage (%) et sont lues de gauche à droite. Quand la fonction printf
rencontre la première spécification de format (le cas échéant), elle convertit la valeur du premier argument après format
et la sort en conséquence. La deuxième spécification de format entraîne la conversion et la sortie du deuxième argument, et ainsi de suite. S’il y a plus d’arguments que de spécifications de format, les arguments en trop sont ignorés. Les résultats ne sont pas définis s’il n’y a pas suffisamment d’arguments pour toutes les spécifications de format.
Important
Assurez-vous que format
n'est pas une chaîne définie par l'utilisateur.
Mappages de routines de texte générique
Routine Tchar.h |
_UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tprintf |
printf |
printf |
wprintf |
_tprintf_l |
_printf_l |
_printf_l |
_wprintf_l |
Spécifications
Routine | En-tête requis |
---|---|
printf , _printf_l |
<stdio.h> |
wprintf , _wprintf_l |
<stdio.h> ou <wchar.h> |
La console n’est pas prise en charge dans les applications de la plateforme Windows universelle (UWP). Les handles de flux standard associés à la console (stdin
, stdout
et stderr
) doivent être redirigés pour que les fonctions de runtime C puissent les utiliser dans les applications UWP. Pour plus d’informations sur la compatibilité, consultez Compatibility.
Important
À compter de Windows 10 version 2004 (build 19041), la famille de fonctions printf
imprime exactement les nombres à virgule flottante pouvant être représentés en suivant les règles IEEE 754 pour l’arrondi. Dans les versions précédentes de Windows, les nombres à virgule flottante pouvant être représentés exactement qui se terminent par « 5 » sont toujours arrondis à la valeur supérieure. IEEE 754 indique qu’ils doivent être arrondis au chiffre pair le plus proche (également appelé « arrondi du banquier »). Par exemple, printf("%1.0f", 1.5)
et printf("%1.0f", 2.5)
doivent être arrondis à 2. Avant, 1.5 aurait été arrondi à 2 et 2.5 à 3. Ce changement affecte uniquement les nombres représentables avec précision. Par exemple, 2.35 (qui, lorsqu’il est représenté en mémoire, est plus proche de 2.35000000000000008) continue d’être arrondi à la valeur supérieure 2.4. L’arrondi effectué par ces fonctions respecte également le mode d’arrondi à virgule flottante défini par fesetround
. Avant, l’arrondi choisissait toujours le comportement FE_TONEAREST
. Ce changement affecte uniquement les programmes générés à l’aide de Visual Studio 2019 versions 16.2 et ultérieures. Pour utiliser le comportement d’arrondi à virgule flottante héritée, liez avec legacy_stdio_float_rounding.obj
.
Exemple
// crt_printf.c
// This program uses the printf and wprintf functions
// to produce formatted output.
#include <stdio.h>
int main( void )
{
char ch = 'h',
*string = "computer";
wchar_t wch = L'w',
*wstring = L"Unicode";
int count = -9234;
double fp = 251.7366;
// Display integers
printf( "Integer formats:\n"
" Decimal: %d Justified: %.6d "
"Unsigned: %u\n",
count, count, count, count );
// Display decimals
printf( "Decimal %d as:\n Hex: %Xh "
"C hex: 0x%x Octal: %o\n",
count, count, count, count );
// Display in different radixes
printf( "Digits 10 equal:\n Hex: %i "
"Octal: %i Decimal: %i\n",
0x10, 010, 10 );
// Display characters
printf("Characters in field (1):\n"
"%10c%5hc%5C%5lc\n",
ch, ch, wch, wch);
wprintf(L"Characters in field (2):\n"
L"%10C%5hc%5c%5lc\n",
ch, ch, wch, wch);
// Display strings
printf("Strings in field (1):\n%25s\n"
"%25.4hs\n %S%25.3ls\n",
string, string, wstring, wstring);
wprintf(L"Strings in field (2):\n%25S\n"
L"%25.4hs\n %s%25.3ls\n",
string, string, wstring, wstring);
// Display real numbers
printf("Real numbers:\n %f %.2f %e %E\n",
fp, fp, fp, fp );
// Display pointer
printf( "\nAddress as: %p\n", &count);
}
Exemple de sortie
Integer formats:
Decimal: -9234 Justified: -009234 Unsigned: 4294958062
Decimal -9234 as:
Hex: FFFFDBEEh C hex: 0xffffdbee Octal: 37777755756
Digits 10 equal:
Hex: 16 Octal: 8 Decimal: 10
Characters in field (1):
h h w w
Characters in field (2):
h h w w
Strings in field (1):
computer
comp
Unicode Uni
Strings in field (2):
computer
comp
Unicode Uni
Real numbers:
251.736600 251.74 2.517366e+002 2.517366E+002
Address as: 0012FF3C
Voir aussi
Syntaxe de spécification de format : printf
et wprintf
fonctions
Prise en charge des fonctions mathématiques et à virgule flottante
E/S de flux
Paramètres régionaux
fopen
, _wfopen
_fprintf_p
, , _fprintf_p_l
_fwprintf_p
, ,_fwprintf_p_l
scanf
, , _scanf_l
wscanf
, ,_wscanf_l
sprintf
, , _sprintf_l
swprintf
, , _swprintf_l
__swprintf_l
vprintf
, fonctions
_set_output_format