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_l
vfwprintf_s
_vfwprintf_s_l
vprintf
, vwprintf
_vprintf_p
, , _vprintf_p_l
_vwprintf_p
_vwprintf_p_l
vprintf_s
, , _vprintf_s_l
vwprintf_s
_vwprintf_s_l
_vscprintf
, , _vscprintf_l
_vscwprintf
_vscwprintf_l
_vsnprintf
, _vsnwprintf
vsprintf
vswprintf
_vsprintf_p
, , _vsprintf_p_l
_vswprintf_p
_vswprintf_p_l
vsprintf_s
, , _vsprintf_s_l
vswprintf_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 vsprintf
das 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_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