Partager via


_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_lfwprintf, ,_fwprintf_l
fprintf_s, , _fprintf_s_lfwprintf_s, ,_fwprintf_s_l
scanf, , _scanf_lwscanf, ,_wscanf_l
scanf_s, , _scanf_s_lwscanf_s, ,_wscanf_s_l
_sprintf_p, , _sprintf_p_l_swprintf_p, ,_swprintf_p_l
sprintf, , _sprintf_lswprintf, , _swprintf_l__swprintf_l
sprintf_s, , _sprintf_s_lswprintf_s, ,_swprintf_s_l
vprintf, fonctions