Freigeben über


vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l

Schreiben von formatierter Ausgabe mithilfe eines Zeigers, der auf eine Liste von Argumenten zeigt. Sicherere Versionen dieser Funktionen sind verfügbar. Informationen dazu 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 schreiben Zeichen.

  • format
    Formatangabe.

  • argptr
    Zeiger zur Liste der Argumente.

  • locale
    Das zu verwendende Gebietsschema.

Weitere Informationen finden Sie unter Formatangaben.

Rückgabewert

vsnprintf,_vsnprintf und _vsnwprintf geben die Anzahl von Zeichen geschrieben, wenn die Anzahl von Zeichen an die kleiner oder gleich count ist; wenn die Anzahl der an die Zeichen größer als count ist, geben diese Funktionen -1 ausgegebenem dem Angeben ist beschnitten zurück. Der Rückgabewert enthält nicht das abschließende NULL-Zeichen, wenn von geschrieben wird.

Wenn buffer oder formatNULL ist oder wenn Anzahl kleiner oder gleich null ist, rufen diese Funktionen den ungültigen Parameterhandler auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, geben diese Funktionen "– 1" zurück und legen errno auf EINVAL fest.

Hinweise

Jede dieser Funktionen verwendet einen Zeiger auf eine Argumentliste, und die Daten formatiert und schreibt in count - Zeichen an Arbeitsspeicher auf, auf den durch buffer gezeigt wird. Wenn genügend Platz am Ende gibt, (das heißt, wenn die Anzahl von Zeichen an die kleiner als count ist), kann der Puffer auf NULL enden.

SicherheitshinweisSicherheitshinweis

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

Hinweis

Um sicherzustellen dass genügend Platz für das abschließende NULL-Zeichen wird, muss count ohne kleiner als die Länge des Puffers und initialisieren Sie den Puffer um vor dem Aufrufen der Funktion ist ungültig zu machen.

vsnprintf ist identisch mit _vsnprintf. vsnprintf wird für die Kompatibilität zum ANSI-Standard enthalten; _vnsprintf wird für Abwärtskompatibilität beibehalten.

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

In C++ haben diese Funktionen Vorlagenüberladungen, mit denen die neueren, sicheren Entsprechungen dieser Funktionen aufgerufen werden. Weitere Informationen finden Sie unter Sichere Vorlagenüberladungen.

Zuordnung generischer Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert

_MBCS definiert

_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> 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_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. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

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