_printf_p
, , _printf_p_l
_wprintf_p
, ,_wprintf_p_l
Imprime la sortie mise en forme dans le flux de sortie standard et active la spécification de l’ordre dans lequel les paramètres sont utilisés dans la chaîne de format.
Syntaxe
int _printf_p(
const char *format [,
argument]...
);
int _printf_p_l(
const char *format,
_locale_t locale [,
argument]...
);
int _wprintf_p(
const wchar_t *format [,
argument]...
);
int _wprintf_p_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.
Notes
La fonction _printf_p
met en forme et imprime une série de caractères et de valeurs dans le flux de sortie standard, stdout
. Si des arguments suivent la chaîne format
, la chaîne format
doit contenir des spécifications qui déterminent le format de sortie des arguments (consultez Paramètres positionnels printf_p).
La différence entre _printf_p
et printf_s
vient du fait que _printf_p
prend en charge les paramètres positionnels, ce qui vous permet de spécifier l'ordre dans lequel les arguments sont utilisés dans la chaîne de format. Pour plus d’informations, consultez Paramètres positionnels printf_p.
_wprintf_p
est la version à caractères larges de _printf_p
; ces fonctions se comportent de la même manière si le flux est ouvert en mode ANSI. _printf_p
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.
Important
Assurez-vous que format
n'est pas une chaîne définie par l'utilisateur.
Si format
ou argument
sont NULL
, ou si la chaîne de format contient des caractères de mise en forme non valides et _printf_p
_wprintf_p
que les fonctions appellent un gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, la fonction retourne -1 et définit errno
avec la valeur EINVAL
.
Mappages de routines de texte générique
Routine Tchar.h | _UNICODE et _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_tprintf_p |
_printf_p |
_printf_p |
_wprintf_p |
_tprintf_p_l |
_printf_p_l |
_printf_p_l |
_wprintf_p_l |
Spécifications
Routine | En-tête requis |
---|---|
_printf_p , _printf_p_l |
<stdio.h> |
_wprintf_p , _wprintf_p_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_p.c
// This program uses the _printf_p and _wprintf_p
// functions to choose the order in which parameters
// are used.
#include <stdio.h>
int main( void )
{
// Positional arguments
_printf_p( "Specifying the order: %2$s %3$s %1$s %4$s %5$s.\n",
"little", "I'm", "a", "tea", "pot");
// Resume arguments
_wprintf_p( L"Reusing arguments: %1$d %1$d %1$d %1$d\n", 10);
// Width argument
_printf_p("Width specifiers: %1$*2$s", "Hello\n", 10);
}
Specifying the order: I'm a little tea pot.
Reusing arguments: 10 10 10 10
Width specifiers: Hello
Voir aussi
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
fprintf
, , _fprintf_l
fwprintf
, ,_fwprintf_l
fprintf_s
, , _fprintf_s_l
fwprintf_s
, ,_fwprintf_s_l
scanf
, , _scanf_l
wscanf
, ,_wscanf_l
scanf_s
, , _scanf_s_l
wscanf_s
, ,_wscanf_s_l
_sprintf_p
, , _sprintf_p_l
_swprintf_p
, ,_swprintf_p_l
sprintf
, , _sprintf_l
swprintf
, , _swprintf_l
__swprintf_l
sprintf_s
, , _sprintf_s_l
swprintf_s
, ,_swprintf_s_l
vprintf
, fonctions