_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
Siehe auch
Referenz
Syntax der Formatangabe: printf- und wprintf-Funktionen
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l