vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l
Ecrit une sortie formattée en utilisant un pointeur vers une liste d'arguments. Des versions plus 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
Paramètres régionaux à utiliser.
Pour plus d'informations, consultez Spécifications de format.
Valeur de retour
vsnprintf,_vsnprintf, et _vsnwprintf retournent le nombre de caractères écrits si le nombre de caractères à écrire est inférieure ou égal à count; si le nombre de caractères à écrire est supérieur à count, ces fonctions retournent -1 indiquant que la sortie a été tronquée. La valeur de retour ne contient pas de null de fin, si un est écrit.
Si buffer ou format est NULL, ou si count est inférieur ou égal à zéro, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent -1 et attribuent à errno la valeur EINVAL.
Notes
Chacune de ces fonctions prend un pointeur vers une liste d'arguments, puis met en forme les données, et écrit jusqu'à count caractères dans la mémoire pointée par buffer. S'il y a de l'espace à la fin (autrement dit, si le nombre de caractères à écrire est inférieur à count), la mémoire tampon est terminée par le caractère NULL.
![]() |
---|
Assurez-vous que 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. |
Notes
Pour vous assurer qu'il y a de l'espace pour le null de fin, assurez-vous que count est strictement inférieur à la longueur de la mémoire tampon et initialisez la mémoire tampon à null avant d'appeler la fonction.
vsnprintf est identique à _vsnprintf. vsnprintf est inclus pour la conformité à la norme ANSI ; _vnsprintf est conservée pour la compatibilité ascendante.
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.
En C++, ces fonctions ont des surcharges de modèle qui appellent les équivalents plus récents et sécurisés de ces fonctions. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.
Mappages de routines de texte générique
Routine TCHAR.H |
_UNICODE & _MBCS non définis |
_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 plus d'informations sur la compatibilité, 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 Exemples d'appel de plateforme.
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