sprintf_s, swprintf_s
Nach oben zu stdio.h
Header-Datei
stdio.h
Kategorie
Funktionen für die formatierte Eingabe/Ausgabe
Prototyp
int sprintf_s(char * restrict s, rsize_t n, const char * restrict format, ...);
int swprintf_s(wchar_t* restrict buffer, rsize_t bufsz, const wchar_t* restrict format, ... );
Beschreibung
Ersetzt sprintf und fügt Sicherheitserweiterungen hinzu.
sprintf_s entspricht sprintf mit Ausnahme der Laufzeiteinschränkung, die sicherstellt, dass s und format keine Null-Zeiger sind. Andere Einschränkungen erfordern, dass alle Formatbezeichner in format, die %s sind, jeweils keine Null-Argumente haben und dass der Bezeichner %n in format nicht verwendet wird.
Wenn eine Verletzung von Laufzeiteinschränkungen auftritt, s kein Null-Zeiger ist und n größer als Null und kleiner als RSIZE_MAX ist, dann setzt die Funktion '\0' auf s[0].
Im Gegensatz zu snprintf_s, snwprintf_s löst die Funktion eine Laufzeiteinschränkungs-Exception aus, wenn n größer als das Array ist, auf das s zeigt.
Rückgabewert
Bei erfolgreicher Ausführung gibt sprintf_s die Anzahl der ausgegebenen Zeichen (ohne das abschließende '\0') zurück. Bei einem Programmierfehler gibt sprintf_s einen negativen Wert zurück. In allen anderen Fehlerfällen wird Null zurückgegeben.
Beispiel
#include <stdio.h>
#include <math.h>
int main(void)
{
char buffer[80];
sprintf_s(buffer, 40, "An approximation of Pi is %f\n", M_PI);
puts(buffer);
return 0;
}
Portabilität
| POSIX | Win32 | ANSI C | ANSI C++ | |
|---|---|---|---|---|
|
sprintf_s |
+ |
+ |
+ |
+ |
|
swprintf_s |
+ |
+ |
+ |