sprintf_s, swprintf_s
Nach oben zu stdio.h - Index
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 s, rsize_t n, const wchar_t * restrict format, ...);
Beschreibung
Ersetzt sprintf und fügt Sicherheitserweiterungen hinzu.
sprintf_s entspricht sprintf, fügt aber die Laufzeiteinschränkung hinzu, die verhindert, dass s und format 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, ist s kein Null-Zeiger, und n ist größer als Null und kleiner als RSIZE_MAX, 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 Codierungsfehler 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 |
+ |
+ |
+ |