Freigeben über


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.

SicherheitshinweisSicherheitshinweis

Stellen Sie sicher, dass format keine benutzerdefinierte Zeichenfolge ist.Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen.

HinweisHinweis

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

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