Partager via


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é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

System : : chaîne : : format

Voir aussi

Référence

E/S de flux

fonctions de vprintf

Syntaxe de spécification de format : fonctions printf et wprintf

fprintf, _fprintf_l, fwprintf, _fwprintf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

va_arg ; va_end ; va_start