Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Convertir un nombre à virgule flottante en chaîne. Cette fonction est une version des améliorations de _fcvt sécurité décrites dans les fonctionnalités de sécurité du CRT.
Syntaxe
errno_t _fcvt_s(
char* buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
template <size_t size>
errno_t _fcvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
Paramètres
buffer
La mémoire tampon fournie destinée à contenir le résultat de la conversion.
sizeInBytes
Taille de la mémoire tampon en octets.
value
Nombre à convertir.
count
Nombre de chiffres après la virgule décimale.
dec
Pointeur désignant la position de la virgule décimale stockée.
sign
Pointeur désignant l’indicateur de signe stocké.
Valeur retournée
Zéro si l’opération aboutit. La valeur renvoyée est un code d’erreur en cas de défaillance. Les codes d’erreur sont définis dans errno.h. Pour obtenir la liste de ces erreurs, consultez , , _sys_errlist_doserrnoet _sys_nerr.errno
Lorsqu’un paramètre n’est pas valide, comme indiqué dans le tableau suivant, cette fonction appelle le gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, cette fonction affecte la valeur errno à EINVAL et retourne EINVAL.
Conditions d’erreur
buffer |
sizeInBytes |
value |
count |
dec |
sign |
Retour | Valeur dans buffer |
|---|---|---|---|---|---|---|---|
NULL |
n'importe laquelle | tous | tous | tous | n'importe laquelle | EINVAL |
Non modifiée. |
Pas NULL (pointe vers une mémoire valide) |
<=0 | n'importe laquelle | tous | tous | n'importe laquelle | EINVAL |
Non modifiée. |
| n'importe laquelle | tous | tous | tous | NULL |
n'importe laquelle | EINVAL |
Non modifiée. |
| n'importe laquelle | tous | tous | tous | n'importe laquelle | NULL |
EINVAL |
Non modifiée. |
Problèmes de sécurité
_fcvt_s peut générer une violation d’accès si buffer elle ne pointe pas vers la mémoire valide et n’est pas NULL.
Notes
La fonction _fcvt_s convertit un nombre à virgule flottante en une chaîne de caractères se terminant par un caractère Null. Le paramètre value est le nombre à virgule flottante à convertir. _fcvt_s stocke les chiffres de value sous forme de chaîne et ajoute un caractère null (« \0 »). Le paramètre count spécifie le nombre de chiffres à stocker après la virgule décimale. Les chiffres en trop sont arrondis au niveau de count positions après la virgule. Si le nombre de chiffres de précision est inférieur à count, la chaîne est remplie de zéros.
Seuls des chiffres sont stockés dans la chaîne. La position de la virgule décimale et le signe de value peuvent être obtenus à partir de dec et sign après l’appel. Le paramètre dec désigne une valeur entière ; celle-ci indique la position de la virgule décimale par rapport au début de la chaîne. Une valeur entière ou zéro indique que la virgule décimale est située à gauche du premier chiffre. Le paramètre sign désigne un entier indiquant le signe de value. L’entier est défini sur 0 si value est positif, et sur un nombre différent de zéro si value est négatif.
Une mémoire tampon de longueur _CVTBUFSIZE est suffisante pour n’importe quelle valeur à virgule flottante.
La différence entre _ecvt_s et _fcvt_s réside dans l’interprétation du paramètre count. _ecvt_scount interprète le nombre total de chiffres dans la chaîne de sortie et _fcvt_s interprète count le nombre de chiffres après la virgule décimale.
En C++, l’utilisation de cette fonction est simplifiée par une surcharge de modèle ; la surcharge peut déduire automatiquement la longueur de la mémoire tampon, ce qui évite d’avoir à spécifier un argument de taille. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.
La version de débogage de cette fonction remplit d’abord la mémoire tampon avec 0xFE. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
| Fonction | En-tête requis | En-tête facultatif |
|---|---|---|
_fcvt_s |
<stdlib.h> | <errno.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Bibliothèques : toutes les versions des bibliothèques runtime C.
Exemple
// fcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main()
{
char * buf = 0;
int decimal;
int sign;
int err;
buf = (char*) malloc(_CVTBUFSIZE);
err = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
if (err != 0)
{
printf("_fcvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}
Converted value: 120000
Voir aussi
Conversion de données
Prise en charge des fonctions mathématiques et à virgule flottante
atof, , _atof_l_wtof, ,_wtof_l
_ecvt_s
_gcvt_s
_fcvt