Freigeben über


_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l

Write formatierte Ausgabe mithilfe eines Zeigers auf eine Liste von 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
    buffer Größe in Zeichen.

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

  • format
    Formatangabe.

  • argptr
    Zeiger auf die Liste der Argumente.

  • locale
    Das zu verwendende Gebietsschema.

Rückgabewert

_vsprintf_p und _vswprintf_p geben die Anzahl der geschriebenen Zeichen, nicht einschließlich des abschließenden NULL-Zeichens oder einen negativen Wert zurück, wenn ein Ausgabefehler auftritt.

Hinweise

Jede dieser Funktionen akzeptiert einen Zeiger auf eine Argumentliste und dann in den Formaten und schreibt die angegebenen Daten in den Arbeitsspeicher, der von bufferdargestellt wird.

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

Die Versionen dieser Funktionen mit dem _l Suffix sind identisch, mit der Ausnahme, dass sie verwenden den Gebietsschemaparameter, der anstelle des aktuellen Threads gebietsschemas übergeben wird.

Wenn die buffer oder format-Parameter NULL-Zeiger handelt, wenn die Anzahl (null) ist, oder wenn die Formatierung der Formatzeichenfolge ungültige Zeichen enthält ungültige Parameter, wird der Ereignishandler aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben die Funktionen festlegen und -1 errno zu EINVALzurück.

Zuweisung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definieren

_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> als auch <stdarg.h>

<varargs.h> *

* Für Kompatibilität UNIX V.

Um Kompatibilität zusätzlichen Informationen 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::::ZeichenfolgeFormat

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_end, va_start