_fcvt_s

Convertit un nombre à virgule flottante en une chaîne Il s'agit de versions de _fcvt avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

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

  • [out] buffer
    La mémoire tampon fournie qui contiendra le résultat de la conversion.

  • [in] sizeInBytes
    Taille, en octets, de la mémoire tampon.

  • [in] value
    Nombre devant être converti.

  • [in] count
    Nombre de chiffres après la virgule.

  • [out] dec
    Pointeur vers l'emplacement de la virgule décimale stockée.

  • [out] sign
    Pointeur vers l'indicateur de signe stocké.

Valeur de retour

Zéro en cas de réussite. La valeur de retour est un code d'erreur en cas de échec. Les codes d'erreur sont définis dans ERRNO.H. Pour obtenir la liste de ces erreurs, consultez errno, _doserrno, _sys_errlist et _sys_nerr.

Dans le cas d'un paramètre non valide, comme indiqué dans le tableau suivant, cette fonction appelle le gestionnaire de paramètre non valide, comme décrit dans Validation de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction paramètre errno à EINVAL et renvoie EINVAL.

Conditions d'erreur

buffer

sizeInBytes

par défaut

count

dec

sign

Return

Valeur dans buffer

NULL

any

any

any

any

any

EINVAL

Non modifié

Non NULL (pointe vers la mémoire valide)

<=0

any

any

any

any

EINVAL

Non modifié

any

any

any

any

NULL

any

EINVAL

Non modifié

any

any

any

any

any

NULL

EINVAL

Non modifié

Problèmes de sécurité

_fcvt_s peut générer une violation d'accès si buffer ne pointe pas vers de la mémoire valide est n'est pas NULL.

Notes

La fonction _fcvt_s convertit un nombre à virgule flottante en une chaîne de caractères terminés par null. Le paramètre value est le nombre à virgule flottante à convertir. _fcvt_s stocke les chiffres de value en tant que chaîne et ajoute un caractère NULL ("\0 "). La paramètre count spécifie le nombre de chiffres à stocker après la virgule décimale. Les données en excès sont arrondis aux emplacements count. S'il y a moins de chiffres de précision quecount, la chaîne est complétées avec des zéros.

Seules les chiffres sont stockés dans la chaîne. La position de la virgule décimale et le signe devalue peuvent être obtenus à partir de dec et design après l'appel. Le paramètre decpointe sur une valeur entière donnant la position de la virgule décimale par rapport au début de la chaine. Un entier nul ou négatif indique que la virgule décimale se trouve à gauche du premier chiffre. Le paramètre sign pointe vers un entier qui indique le signe de value. L'entier est défini à 0 si value est positif est défini sur un nombre différent de zéro si value est négatif.

Une mémoire tampon de longueur _CVTBUFSIZE est suffisante pour toute valeur à virgule flottante.

La différence entre _ecvt_s et _fcvt_s réside dans la traduction du paramètre d'count. _ecvt_s interprète count comme le nombre total de chiffres dans la chaîne de sortie, et que_fcvt_s interprète count comme le nombre de chiffres après la virgule.

En C++, l'utilisation de ces fonctions est simplifiée par des surcharges de modèle ; les surcharges peuvent également déduire la longueur de la mémoire tampon automatiquement, en éliminant le besoin de spécifier un argument de taille. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Les versions de déboggage de ces fonctions remplissent d'abord la mémoire tampon avec 0xFD. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

Configuration requise

Fonction

En-tête requis

En-tête facultatif

_fcvt_s

<stdlib.h>

<errno.h>

Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.

Bibliothèques : toutes les versions Fonctions des bibliothèque CRT.

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);  
  
}
  

Équivalent .NET Framework

ToString

Voir aussi

Référence

Conversion de données

Prise en charge de la virgule flottante

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_gcvt_s

_fcvt