Partager via


vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l

Sortie mise en forme d'Écriture à l'aide d'un pointeur vers une liste d'arguments.plus les versions sécurisées de ces fonctions sont disponibles ; consultez vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l.

int vsnprintf(
   char *buffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf(
   char *buffer,
   size_t count,
   const char *format,
   va_list argptr 
);
int _vsnprintf_l(
   char *buffer,
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
);
int _vsnwprintf(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   va_list argptr 
);
int _vsnwprintf_l(
   wchar_t *buffer,
   size_t count,
   const wchar_t *format,
   locale_t locale,
   va_list argptr 
);
template <size_t size>
int vsnprintf(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnprintf(
   char (&buffer)[size],
   size_t count,
   const char *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnprintf_l(
   char (&buffer)[size],
   size_t count,
   const char *format,
   locale_t locale,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf(
   wchar_t (&buffer)[size],
   size_t count,
   const wchar_t *format,
   va_list argptr 
); // C++ only
template <size_t size>
int _vsnwprintf_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 à écrire.

  • format
    Spécification de format.

  • argptr
    Pointeur vers la liste d'arguments.

  • locale
    Les paramètres régionaux à utiliser.

Pour plus d'informations, consultez Spécifications de format.

Valeur de retour

vsnprintf,_vsnprintf, et retour d' _vsnwprintf le nombre de caractères entrés si le nombre de caractères à écrire est inférieure ou égale à count; si le nombre de caractères à écrire est supérieure count, ces fonctions retournent -1 indiquant que la sortie a été tronqué.La valeur de retour n'inclut pas null de fin, s'il est écrit.

si buffer ou format est NULL, ou si le nombre est inférieur ou égal à zéro, 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.

Notes

Chacune de ces fonctions prend un pointeur vers une liste d'arguments, puis met en forme les données, et prêt à count des caractères à la mémoire désignée par buffer.S'il y a partie à la fin (autrement dit, si le nombre de caractères à écrire est moins qu' count), la mémoire tampon sera se terminant par null.

Note de sécuritéNote de sécurité

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.

[!REMARQUE]

Pour vous assurer qu'il existe place pour un caractère null de fin, assurez -vous que count est strictement inférieure à la longueur de la mémoire tampon et initialisez la mémoire tampon pour annuler avant d'appeler la fonction.

vsnprintf identique à _vsnprintf.vsnprintf est inclus pour la conformité à la norme ANSI ; _vnsprintf est conservé pour la compatibilité descendante.

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.

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

_vsntprintf

_vsnprintf

_vsnprintf

_vsnwprintf

_vsntprintf_l

_vsnprintf_l

_vsnprintf_l

_vsnwprintf_l

Configuration requise

routine

en-tête requis

en-têtes facultatifs

vsnprintf

<stdio.h> et <stdarg.h>

<varargs.h> *

_vsnprintf, _vsnprintf_l

<stdio.h> et <stdarg.h>

<varargs.h> *

_vsnwprintf, _vsnwprintf_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_vsnprintf.cpp
// compile with: /W3
#include <stdio.h>
#include <wtypes.h>

void FormatOutput(LPCSTR formatstring, ...) 
{
   int nSize = 0;
   char buff[10];
   memset(buff, 0, sizeof(buff));
   va_list args;
   va_start(args, formatstring);
   nSize = vsnprintf( buff, sizeof(buff) - 1, formatstring, args); // C4996
// Note: vsnprintf is deprecated; consider vsnprintf_s instead
   printf("nSize: %d, buff: %s\n", nSize, buff);
}

int main() {
   FormatOutput("%s %s", "Hi", "there");
   FormatOutput("%s %s", "Hi", "there!");
   FormatOutput("%s %s", "Hi", "there!!");
}
  
  

Équivalent .NET Framework

Non applicable. Pour appeler la fonction C standard, utilisez PInvoke. Pour plus d'informations, consultez l' exemples d'appel de code non managé.

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