Freigeben über


_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

zum formatierten Ausgabe mithilfe eines Zeigers auf eine Liste mit Argumenten, mit der Möglichkeit, die Reihenfolge anzugeben, in der die Argumente verwendet werden.

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 
);

Parameter

  • buffer
    Speicherort für die Ausgabe.

  • sizeInBytes
    Größe von buffer in Zeichen.

  • count
    Maximale Anzahl, in der UNICODE-Version dieser Funktion zu speichern, Zeichen.

  • format
    Formatangabe.

  • argptr
    Zeiger zur Liste der Argumente.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

_vsprintf_p und _vswprintf_p geben die Anzahl der geschriebenen Zeichen ohne das abschließende Nullzeichen zurück oder einen negativen Wert, wenn ein Ausgabefehler auftritt.

Hinweise

Jede dieser Funktionen verwendet einen Zeiger auf eine Argumentliste und formatiert und schreibt dann die angegebenen Daten in den Speicher, auf den von buffer gezeigt wird.

Diese Funktionen unterscheiden sich von vsprintf_s und vswprintf_s, da sie nur positionelle Parameter unterstützen. Weitere Informationen finden Sie unter printf_p-Positionsparameter.

Die Versionen dieser Funktionen mit dem _l-Suffix sind beinahe identisch, verwenden jedoch den ihnen übergebenen Gebietsschemaparameter anstelle des aktuellen Threadgebietsschemas.

Wenn die buffer oder format sind Parameter NULL-Zeiger, wenn Anzahl ist oder wenn Formatzeichenfolge die ungültige Formatierungszeichen enthält, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben die Funktionen – 1 zurück und legen errno auf EINVAL fest.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_UNICODE definiert

_vstprintf_p

_vsprintf_p

_vsprintf_p

_vswprintf_p

_vstprintf_p_l

_vsprintf_p_l

_vsprintf_p_l

_vswprintf_p_l

Anforderungen

Routine

Erforderlicher Header

Optionale Header

_vsprintf_p, _vsprintf_p_l

<stdio.h> und <stdarg.h>

<varargs.h>*

_vswprintf_p, _vswprintf_p_l

<stdio.h> oder <wchar.h> und <stdarg.h>

<varargs.h>*

* Benötigt für die Kompatibilität mit UNIX V.

Zusätzliche Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

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

.NET Framework-Entsprechung

System::String::Format

Siehe auch

Referenz

Stream-E/A

vprintf-Funktionen

Syntax der Formatangabe: printf- und wprintf-Funktionen

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