vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l
Entrez la sortie mise en forme à l'aide d'un pointeur vers une liste d'arguments.plus les versions sécurisées de ces fonctions sont disponibles ; consultez vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l.
int vsprintf(
char *buffer,
const char *format,
va_list argptr
);
int _vsprintf_l(
char *buffer,
const char *format,
locale_t locale,
va_list argptr
);
int vswprintf(
wchar_t *buffer,
size_t count,
const wchar_t *format,
va_list argptr
);
int _vswprintf_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
);
int __vswprintf_l(
wchar_t *buffer,
const wchar_t *format,
locale_t locale,
va_list argptr
);
template <size_t size>
int vsprintf(
char (&buffer)[size],
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsprintf_l(
char (&buffer)[size],
const char *format,
locale_t locale,
va_list argptr
); // C++ only
template <size_t size>
int vswprintf(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
va_list argptr
); // C++ only
template <size_t size>
int _vswprintf_l(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
); // C++ only
Paramètres
buffer
emplacement de stockage pour la sortie.count
Nombre maximal de caractères à les stocker, dans la version d' UNICODE de cette fonction.format
Spécification de format.argptr
Pointeur vers la liste d'arguments.locale
Les paramètres régionaux à utiliser.
Valeur de retour
vsprintf et vswprintf retournent le nombre de caractères entrés, sans le caractère NULL de fin, ou une valeur négative si une erreur de sortie se produit.si buffer ou format est un pointeur null, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions retournent -1 et errno défini à EINVAL.
Pour plus d'informations sur ces éléments et d'autres codes d'erreur, consultez _doserrno, errno, _sys_errlist, et _sys_nerr.
Notes
Chacune de ces fonctions prend un pointeur vers une liste d'arguments, puis aux formats et écrit les données données dans la mémoire désignée par buffer.
Les versions de ces fonctions par le suffixe d' _l sont identiques mais elles utilisent le paramètre de paramètres régionaux passé au lieu des paramètres régionaux du thread courant.
Note de sécurité |
---|
À l'aide de vsprintf, pas voici aucun moyen de limiter le nombre de caractères entrés, ce qui signifie que le code à l'aide de cette fonction est probablement les dépassements de mémoire tampon.Utilisez _vsnprintf à la place, ou appelez _vscprintf pour déterminer la taille une mémoire tampon est nécessaire.en outre, assurez-vous qu' format n'est pas une chaîne définie par l'utilisateur.Pour plus d'informations, consultez Solutions contre les dépassements de mémoire tampon. |
vswprintf est conforme à la norme ISO C, qui requiert le deuxième paramètre, count, de type size_t.Pour forcer le comportement non standard ancien, définissez _CRT_NON_CONFORMING_SWPRINTFS. que l'ancien comportement ne peut pas être dans une version ultérieure, le code doit être modifié pour utiliser le nouveau comportement de conformité.
En C++, ces fonctions ont des surcharges de modèle qui appellent des homologues plus récentes et sécurisées de ces fonctions.Pour plus d'informations, consultez Surcharges sécurisées de modèle.
mappages de routines de texte générique
routine de TCHAR.H |
_MBCS & de _UNICODE non défini |
_MBCS défini |
_UNICODE défini |
---|---|---|---|
_vstprintf |
vsprintf |
vsprintf |
vswprintf |
_vstprintf_l |
_vsprintf_l |
_vsprintf_l |
_vswprintf_l |
Configuration requise
routine |
en-tête requis |
en-têtes facultatifs |
---|---|---|
vsprintf, _vsprintf_l |
<stdio.h> et <stdarg.h> |
<varargs.h> * |
vswprintf, _vswprintf_l |
<stdio.h> ou <wchar.h> , et <stdarg.h> |
<varargs.h> * |
* Requis pour la compatibilité UNIX V.
Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.
Exemple
// crt_vsprintf.c
// compile with: /W3
// This program uses vsprintf to write to a buffer.
// The size of the buffer is determined by _vscprintf.
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
void test( char * format, ... )
{
va_list args;
int len;
char *buffer;
// retrieve the variable arguments
va_start( args, format );
len = _vscprintf( format, args ) // _vscprintf doesn't count
+ 1; // terminating '\0'
buffer = (char*)malloc( len * sizeof(char) );
vsprintf( buffer, format, args ); // C4996
// Note: vsprintf is deprecated; consider using vsprintf_s instead
puts( buffer );
free( buffer );
}
int main( void )
{
test( "%d %c %d", 123, '<', 456 );
test( "%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