Partager via


_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

Entrez 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 d' buffer en caractères.

  • 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_p et _vswprintf_p 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.

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.

Ces fonctions et ceux d' vsprintf_s et d' vswprintf_s uniquement dans la mesure où elles prennent en charge les paramètres positionnels.Pour plus d'informations, consultez paramètres positionnels de printf_p.

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.

Si les paramètres d' buffer ou d' format sont des pointeurs null, si le nombre est égal à zéro, ou si la chaîne de format contient les caractères de mise en forme valides, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, les fonctions retournent -1 et errno défini à EINVAL.

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_p

_vsprintf_p

_vsprintf_p

_vswprintf_p

_vstprintf_p_l

_vsprintf_p_l

_vsprintf_p_l

_vswprintf_p_l

Configuration requise

routine

en-tête requis

en-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 des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Exemple

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

É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