_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l
Ecrire une sortie formatée en utilsant un pointeur vers une liste d'arguments, avec la possibilité de spécifier l'ordre dans lequel les arguments sont utilisés.
int _vsprintf_p(
char *buffer,
size_t sizeInBytes,
const char *format,
va_list argptr
);
int _vsprintf_p_l(
char *buffer,
size_t sizeInBytes,
const char *format,
locale_t locale,
va_list argptr
);
int _vswprintf_p(
wchar_t *buffer,
size_t count,
const wchar_t *format,
va_list argptr
);
int _vswprintf_p_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
);
Paramètres
buffer
Emplacement de stockage pour la sortie.sizeInBytes
Taille de buffer en caractères.count
Nombre maximal de caractères à stocker dans la version Unicode de cette fonction.format
Spécification de format.argptr
Pointeur vers la liste d'arguments.locale
Paramètres régionaux à utiliser.
Valeur de retour
_vsprintf_p et _vswprintf_p renvoient le nombre de caractères écrits, sans le caractère null de fin, ou une valeur négative si une erreur de sortie se produit.
Notes
Chacune de ces fonctions prend un pointeur comme liste d'arguments, et le forme ensuite puis écrit les données dans la mémoire pointée par buffer.
Ces fonctions diffèrent des versions vsprintf_s et vswprintf_s uniquement car elles prennent en charge les paramètres positionnels. Pour plus d'informations, consultez Paramètres positionnels printf_p.
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.
Si les paramètres de buffer ou d'format sont des pointeurs NULL, si le nombre est zéro, ou si la chaîne de format contient les caractères de mise en forme valides, 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, cette fonction renvoient -1 et définie errno avec la valeur EINVAL.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE & _MBCS non définis |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_vstprintf_p |
_vsprintf_p |
_vsprintf_p |
_vswprintf_p |
_vstprintf_p_l |
_vsprintf_p_l |
_vsprintf_p_l |
_vswprintf_p_l |
Configuration requise
Routine |
En-tête requis |
En-têtes facultatifs |
---|---|---|
_vsprintf_p, _vsprintf_p_l |
<stdio.h> et <stdarg.h> |
<varargs.h>* |
_vswprintf_p, _vswprintf_p_l |
<stdio.h> ou <wchar.h>, et <stdarg.h> |
<varargs.h>* |
* Requis pour la compatibilité UNIX V.
Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.
Exemple
// crt__vsprintf_p.c
// This program uses vsprintf_p to write to a buffer.
// The size of the buffer is determined by _vscprintf_p.
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
void example( char * format, ... )
{
va_list args;
int len;
char *buffer = NULL;
va_start( args, format );
// _vscprintf doesn't count the
// null terminating string so we add 1.
len = _vscprintf_p( format, args ) + 1;
// Allocate memory for our buffer
buffer = (char*)malloc( len * sizeof(char) );
if (buffer)
{
_vsprintf_p( buffer, len, format, args );
puts( buffer );
free( buffer );
}
}
int main( void )
{
// First example
example( "%2$d %1$c %3$d", '<', 123, 456 );
// Second example
example( "%s", "This is a string" );
}
Équivalent .NET Framework
Voir aussi
Référence
Syntaxe de spécification de format : fonctions printf et wprintf
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l