sprintf_s, swprintf_s
Remonter à stdio.h
Fichier d'en-tête
stdio.h
Catégorie
Fonctions d'entrée/sortie formatées
Prototype
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, ... );
Description
Remplace sprintf tout en renforçant la sécurité.
sprintf_s est équivalente à sprintf, sauf pour les contraintes d'exécution qui imposent que s et format ne soient pas des pointeurs null. D'autres contraintes exigent que chaque spécificateur de format %s dans format ait un argument non null et que le spécificateur %n ne soit pas utilisé dans format.
Si une violation de contrainte d'exécution se produit et que s n'est pas un pointeur null, et que n est supérieur à zéro et inférieur à RSIZE_MAX, la fonction place '\0' dans s[0].
A l'inverse de snprintf_s, snwprintf_s, dans le cas où n est plus grand que le tableau pointé par s, elle déclenche une exception de contrainte d'exécution.
Valeur renvoyée
En cas de réussite, sprintf_s renvoie le nombre de caractères, sans inclure le '\0' terminal. En cas d'erreur de codage, sprintf_s renvoie une valeur négative. Pour les autres types d'erreurs, zéro est renvoyé.
Exemple
#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é
| POSIX | Win32 | ANSI C | ANSI C++ | |
|---|---|---|---|---|
|
sprintf_s |
+ |
+ |
+ |
+ |
|
swprintf_s |
+ |
+ |
+ |