sprintf_s, swprintf_s
Remonter à stdio.h - Index
Fichier 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 s, rsize_t n, const wchar_t * restrict format, ...);
Description
Remplace sprintf en ajoutant des améliorations relatives à la sécurité.
sprintf_s est équivalente à sprintf, à l'exception de contraintes d'exécution qui interdisent à s et format d'être des pointeurs null. D'autres contraintes nécessitent que chaque spécificateur de format qui est %s ait des arguments non null respectifs et que le spécificateur %n ne soit pas utilisé dans format.
Si une violation de contrainte d'exécution se produit, si s n'est pas un pointeur null, et si n est supérieur à zéro et inférieur à RSIZE_MAX, la fonction place alors '\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 succès, sprintf_s renvoie le nombre de caractères de la sortie, sans tenir compte du caractère de terminaison '\0'. En cas d'erreur d'encodage, sprintf_s renvoie une valeur négative. Tout autre cas d'erreur renvoie zéro.
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 |
+ |
+ |
+ |