vprintf -Funktionen

Jede dieser vprintf-Funktionen verwendet einen Zeiger auf eine Argumentliste und formatiert und schreibt dann die angegebenen Daten in ein bestimmtes Ziel. Die Funktionen unterscheiden sich auf verschiedene Arten: Bei der Parameterüberprüfung werden bei der Parameterüberprüfung unabhängig davon, ob die Funktionen single-byte- oder wide character strings, das Ausgabeziel und die Unterstützung für die Angabe der Reihenfolgeparameter in der Formatzeichenfolge verwendet werden.

_vcprintf, _vcwprintf
vfprintf, vfwprintf
_vfprintf_p, , _vfprintf_p_l_vfwprintf_p_vfwprintf_p_l
vfprintf_s, , _vfprintf_s_lvfwprintf_s_vfwprintf_s_l
vprintf, vwprintf
_vprintf_p, , _vprintf_p_l_vwprintf_p_vwprintf_p_l
vprintf_s, , _vprintf_s_lvwprintf_s_vwprintf_s_l
_vscprintf, , _vscprintf_l_vscwprintf_vscwprintf_l
_vsnprintf, _vsnwprintfvsprintfvswprintf
_vsprintf_p, , _vsprintf_p_l_vswprintf_p_vswprintf_p_l
vsprintf_s, , _vsprintf_s_lvswprintf_s_vswprintf_s_l

Hinweise

Die vprintf-Funktionen verhalten sich ähnlich wie die entsprechenden Funktionen, die in der folgenden Tabelle aufgeführt werden. Allerdings akzeptiert jede vprintf-Funktion einen Zeiger auf eine Argumentliste, während jede der entsprechenden Funktionen eine Argumentliste akzeptiert.

Diese Funktionen formatieren Daten für die Ausgabe an die im Folgenden genannten Ziele.

Funktion Entsprechende Funktion Ausgabeziel Parameterüberprüfung Unterstützung für positionale Parameter
_vcprintf _cprintf Konsole Prüfen Sie auf NULL. Nein
_vcwprintf _cwprintf Konsole Prüfen Sie auf NULL. Nein
vfprintf fprintf stream Prüfen Sie auf NULL. Nein
vfprintf_p fprintf_p stream Prüfen Sie auf NULL und ein gültiges Format. ja
vfprintf_s fprintf_s stream Prüfen Sie auf NULL und ein gültiges Format. Nein
vfwprintf fwprintf stream Prüfen Sie auf NULL. Nein
vfwprintf_p fwprintf_p stream Prüfen Sie auf NULL und ein gültiges Format. ja
vfwprintf_s fwprintf_s stream Prüfen Sie auf NULL und ein gültiges Format. Nein
vprintf printf stdout Prüfen Sie auf NULL. Nein
vprintf_p printf_p stdout Prüfen Sie auf NULL und ein gültiges Format. ja
vprintf_s printf_s stdout Prüfen Sie auf NULL und ein gültiges Format. Nein
vwprintf wprintf stdout Prüfen Sie auf NULL. Nein
vwprintf_p wprintf_p stdout Prüfen Sie auf NULL und ein gültiges Format. ja
vwprintf_s wprintf_s stdout Prüfen Sie auf NULL und ein gültiges Format. Nein
vsprintf sprintf Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL. Nein
vsprintf_p sprintf_p Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL und ein gültiges Format. ja
vsprintf_s sprintf_s Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL und ein gültiges Format. Nein
vswprintf swprintf Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL. Nein
vswprintf_p swprintf_p Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL und ein gültiges Format. ja
vswprintf_s swprintf_s Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL und ein gültiges Format. Nein
_vscprintf _vscprintf Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL. Nein
_vscwprintf _vscwprintf Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL. Nein
_vsnprintf _snprintf Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL. Nein
_vsnwprintf _snwprintf Speicher, auf den verwiesen wird, von buffer Prüfen Sie auf NULL. Nein

Das Argument argptr weist den Typ va_list auf, der in VARARGS.H und STDARG.H definiert ist. Die argptr Variable muss durch va_start initialisiert werden und kann durch nachfolgende va_arg Aufrufe erneut initialisiert werden; argptr verweist dann auf den Anfang einer Liste von Argumenten, die für die Ausgabe gemäß den entsprechenden Spezifikationen des format Arguments konvertiert und übertragen werden. format hat das gleiche Formular und dieselbe Funktion wie das format Argument für printf. Keine dieser Funktionen ruft auf va_end. Eine umfassendere Beschreibung der einzelnen vprintf-Funktionen finden Sie in der Beschreibung der entsprechenden Funktion, wie in der obigen Tabelle aufgeführt wird.

_vsnprintf unterscheidet sich von vsprintf der, dass sie nicht mehr als count Bytes in buffer.

Die Versionen dieser Funktionen mit dem W-Infix im Namen sind Breitzeichenversionen der entsprechenden Funktionen ohne das W-Infix ; in jeder dieser Breitzeichenfunktionen buffer und format sind Breite-Zeichen-Zeichenfolgen. Anderenfalls verhält sich jede Breitzeichenfunktion identisch zu der entsprechenden SBCS-Funktion.

Die Versionen dieser Funktionen mit _s und _p Suffixen sind die sichereren Versionen. Diese Versionen überprüfen die Formatzeichenfolgen. Sie generieren eine Ausnahme, wenn die Formatzeichenfolge nicht wohlgeformt ist (z. B. wenn ungültige Formatierungszeichen verwendet werden).

Mit den Versionen dieser Funktionen mit dem _p Suffix können Sie die Reihenfolge angeben, in der die angegebenen Argumente in der Formatzeichenfolge ersetzt werden. Weitere Informationen finden Sie unter printf-Positionsparameter.

vswprintf_vsnwprintf_vsnprintf Wenn vsprintfdas Kopieren zwischen überlappenden Zeichenfolgen erfolgt, ist das Verhalten nicht definiert.

Wichtig

Stellen Sie sicher, dass format keine benutzerdefinierte Zeichenfolge ist. Weitere Informationen finden Sie unter Vermeiden von Pufferüberläufen. Wenn Sie die sicheren Versionen dieser Funktionen (entweder die _s Oder _p Suffixe) verwenden, kann eine vom Benutzer bereitgestellte Formatzeichenfolge eine ungültige Parameterausnahme auslösen, wenn die vom Benutzer bereitgestellte Zeichenfolge ungültige Formatierungszeichen enthält.

Siehe auch

Stream-E/A
fprintf, , _fprintf_lfwprintf_fwprintf_l
printf, , _printf_lwprintf_wprintf_l
sprintf, , _sprintf_lswprintf, , _swprintf_l__swprintf_l
va_arg, , va_copyva_endva_start