Nous recommandons d’utiliser Visual Studio 2017

_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Écrire la sortie mise en forme à l’aide d’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.

_vsprintf_pet _vswprintf_p retourner le nombre de caractères écrits, non compris le caractère null de fin, ou une valeur négative si une erreur de sortie.

Chacune de ces fonctions prend un pointeur vers une liste d’arguments et puis met en forme et écrit les données spécifiées dans la mémoire pointée par buffer.

Ces fonctions diffèrent les vsprintf_s et vswprintf_s uniquement qu’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 le buffer ou format paramètres sont des pointeurs NULL, si le nombre est égal à zéro, ou si la chaîne de format contient des caractères de mise en forme non 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, ces fonctions retournent -1 et définissent errno avec la valeur EINVAL.

Mappages de routines de texte générique

Routine TCHAR.H_UNICODE et _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
RoutineEn-tête requisEn-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é, voir Compatibilité dans l'introduction.

// 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" );  
}  

123 < 456  
This is a string  

System::String::format

Flux d’e/s
Fonctions vprintf
Syntaxe de spécification de format : les 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_copy, va_end, va_start

Afficher: