vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l
Write formatierte Ausgabe mithilfe eines Zeigers auf eine Liste von Argumenten.Sicherere Versionen dieser Funktionen sind verfügbar. Weitere Informationen finden Sie unter vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l.
int vsnprintf(
char *buffer,
size_t count,
const char *format,
va_list argptr
);
int _vsnprintf(
char *buffer,
size_t count,
const char *format,
va_list argptr
);
int _vsnprintf_l(
char *buffer,
size_t count,
const char *format,
locale_t locale,
va_list argptr
);
int _vsnwprintf(
wchar_t *buffer,
size_t count,
const wchar_t *format,
va_list argptr
);
int _vsnwprintf_l(
wchar_t *buffer,
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
);
template <size_t size>
int vsnprintf(
char (&buffer)[size],
size_t count,
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnprintf(
char (&buffer)[size],
size_t count,
const char *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnprintf_l(
char (&buffer)[size],
size_t count,
const char *format,
locale_t locale,
va_list argptr
); // C++ only
template <size_t size>
int _vsnwprintf(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
va_list argptr
); // C++ only
template <size_t size>
int _vsnwprintf_l(
wchar_t (&buffer)[size],
size_t count,
const wchar_t *format,
locale_t locale,
va_list argptr
); // C++ only
Parameter
buffer
Speicherort für die Ausgabe.count
Maximale Anzahl zu schreibende Zeichen.format
Formatangabe.argptr
Zeiger auf die Liste der Argumente.locale
Das zu verwendende Gebietsschema.
Weitere Informationen finden Sie unter Formatangaben.
Rückgabewert
vsnprintf,_vsnprintfund _vsnwprintf Rückgabe die Anzahl von Zeichen geschrieben, wenn die Anzahl der zu schreibenden Zeichen kleiner oder gleich countist. Wenn die Anzahl der zu schreibenden Zeichen größer als countist, geben diese Funktionen -1 wurden abgeschnitten ist das falsch angegeben.Der Rückgabewert schließt nicht die abschließende NULL-Zeichen, sofern geschrieben werden soll.
Wenn buffer oder formatNULList oder wenn die Anzahl kleiner oder gleich null ist, rufen diese Funktionen der ungültige Parameter für ein, wie in Parametervalidierungbeschrieben.Wenn die Ausführung ermöglicht wird, um fortzufahren, geben diese Funktionen festlegen und -1 errno zu EINVALzurück.
Hinweise
Jede dieser Funktionen akzeptiert einen Zeiger auf eine Argumentliste formatiert, und schreibt die Daten in count Zeichen in den Speicher, der von bufferdargestellt wird.Wenn Sie am Ende wird (das heißt wenn die Anzahl der zu schreibenden Zeichen ist kleiner als count), wird der Puffer mit Null endendes.
Sicherheitshinweis |
---|
Stellen Sie sicher, dass format keine benutzerdefinierte Zeichenfolge ist.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen. |
Hinweis |
---|
Um sicherzustellen, dass es sich um Platz für das abschließende NULL-Zeichen wird, stellen Sie sicher, dass count kleiner als die Pufferlänge und initialisieren Sie den Puffer um vor dem Aufrufen der Funktion NULL ist. |
vsnprintf ist mit _vsnprintfidentisch.vsnprintf wird bereitgestellt, um die Kompatibilität mit dem ANSI-Standard enthalten. _vnsprintf wird aus Gründen der Abwärtskompatibilität beibehalten.
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.
In C++ haben Überladungen Vorlagen, die diese Funktionen aufrufen, um das neueres, Entsprechungen dieser Funktionen.Weitere Informationen finden Sie unter Speichern Sie Vorlagen-Überladungen.
Zuweisung generischer Textroutinen
TCHAR.H-Routine |
_UNICODE & _MBCS nicht definiert |
_MBCS definieren |
_UNICODE definiert |
---|---|---|---|
_vsntprintf |
_vsnprintf |
_vsnprintf |
_vsnwprintf |
_vsntprintf_l |
_vsnprintf_l |
_vsnprintf_l |
_vsnwprintf_l |
Anforderungen
Routine |
Erforderlicher Header |
Optionale Header |
---|---|---|
vsnprintf |
<stdio.h> und <stdarg.h> |
<varargs.h> * |
_vsnprintf, _vsnprintf_l |
<stdio.h> und <stdarg.h> |
<varargs.h> * |
_vsnwprintf, _vsnwprintf_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_vsnprintf.cpp
// compile with: /W3
#include <stdio.h>
#include <wtypes.h>
void FormatOutput(LPCSTR formatstring, ...)
{
int nSize = 0;
char buff[10];
memset(buff, 0, sizeof(buff));
va_list args;
va_start(args, formatstring);
nSize = vsnprintf( buff, sizeof(buff) - 1, formatstring, args); // C4996
// Note: vsnprintf is deprecated; consider vsnprintf_s instead
printf("nSize: %d, buff: %s\n", nSize, buff);
}
int main() {
FormatOutput("%s %s", "Hi", "there");
FormatOutput("%s %s", "Hi", "there!");
FormatOutput("%s %s", "Hi", "there!!");
}
.NET Framework-Entsprechung
Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.
Siehe auch
Referenz
Syntax der Formatangabe: printf- und wprintf-Funktionen
fprintf, _fprintf_l, fwprintf, _fwprintf_l
printf, _printf_l, wprintf, _wprintf_l