vsprintf_s, vswprintf_s
Nach oben zu stdio.h - Index
Header-Datei
stdio.h
Kategorie
Funktionen für die formatierte Eingabe/Ausgabe
Prototyp
int vsprintf_s(char * restrict s, rsize_t n, const char * restrict format, va_list arg);
int vswprintf_s(wchar_t * restrict s, rsize_t n, const wchar_t * restrict format, va_list arg);
Beschreibung
Ersetzt vsprintf, vswprintf und fügt Sicherheitserweiterungen hinzu.
Die v...printf-Funktionen können als alternative Eintrittspunkte für die ...printf-Funktionen betrachtet werden. Sie verhalten sich genau wie ihre ...printf-Entsprechungen, akzeptieren jedoch einen Zeiger auf eine Argumentliste statt der Argumentliste selbst.
vsprintf_s akzeptiert einen Zeiger auf eine Argumentliste, ordnet die Argumente den Formatbezeichnern in dem String zu, auf den format zeigt, und schreibt die formatierten Daten in einen Stream. Die Anzahl der Formatbezeichner muss gleich der Anzahl der Argumente sein.
vfprintf_s entspricht vsprintf, vswprintf, fügt aber den Parameter n und Laufzeiteinschränkungen bezüglich der Gültigkeit von s, format und der Elemente in arg hinzu, die einem %s-Formatbezeichner entsprechen (dürfen keine Null-Zeiger sein).
Bei einer Verletzung von Laufzeiteinschränkungen setzt vsprintf_s '\0' auf s[0].
Im Gegensatz zu vsnprintf_s, vsnwprintf_s verkürzt vsprintf_s das Ergebnis nicht, damit es in das Array passt, auf das s zeigt. Stattdessen wird eine Laufzeiteinschränkungsverletzung ausgegeben.
Rückgabewert
vsprintf_s gibt die Anzahl der ausgegebenen Zeichen zurück. Bei einem Fehler gibt vsprintf_s einen negativen Wert zurück. In allen anderen Fällen gibt vsprintf_s Null zurück.
Beispiel
#include <stdio.h> #include <conio.h> #include <stdarg.h> char buffer[80]; int vspf(char *fmt, ...) { va_list argptr; int cnt; va_start(argptr, fmt); cnt = vsprintf_s(buffer, 70,fmt, argptr); va_end(argptr); return(cnt); } int main(void) { int inumber = 30; float fnumber = 90.0; char string[4] = "abc"; vspf("%d %f %s", inumber, fnumber, string); printf_s("%s\n", buffer); return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
vsprintf_s |
+ |
+ |
+ |
+ |
vswprintf_s |
+ |
+ |
+ |