Partager via


_fcvt_s

Convertit un nombre à virgule flottante en chaîne.Il s'agit d'une version de _fcvt avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du 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
    la taille de la mémoire tampon en octets.

  • [in] value
    Nombre à convertir.

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

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

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

Valeur de retour

Zéro si l'opération a réussi.La valeur de retour est un code d'erreur si un échec.Les codes d'erreur sont définis dans Errno.h.Pour obtenir la liste de ces erreurs, consultez l' errno, _doserrno, _sys_errlist, et _sys_nerr.

Dans le cas d'un paramètre non valide, comme indiqué dans le tableau ci-dessous, cette fonction appelle le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, les ensembles errno de cette fonction à EINVAL et retourne EINVAL.

conditions d'erreur

buffer

sizeInBytes

value

count

décembre

sign

Return

valeur dans buffer

NULL

quels

quels

quels

quels

quels

EINVAL

non modifié.

Pas NULL (pointe vers une mémoire non valide)

<=0

quels

quels

quels

quels

EINVAL

non modifié.

quels

quels

quels

quels

NULL

quels

EINVAL

non modifié.

quels

quels

quels

quels

quels

NULL

EINVAL

non modifié.

problèmes de sécurité

_fcvt_s peut générer une violation d'accès si buffer n'indique pas une mémoire non valide et n'est pas NULL.

Notes

la fonction d' _fcvt_s convertit un nombre à virgule flottante à une chaîne de caractères se terminant par null.le paramètre d' value est le nombre à virgule flottante à convertir._fcvt_s enregistre les chiffres d' value en tant que chaîne et ajoute un caractère Null (" \ 0 ").Le paramètre d' count spécifie le nombre de chiffres à stocker après la virgule décimale.Les chiffres trop sont arrondis off aux emplacements d' count .S'il y a moins de les chiffres d' count de précision, la chaîne est effectuée avec des zéros non significatifs.

Uniquement des chiffres sont stockés dans la chaîne.La position de la virgule décimale et le signe d' value peuvent être obtenus à partir de dec et d' sign après l'appel.les points de paramètre d' dec à une valeur entière ; cette valeur entière affiche la position de la virgule décimale par rapport à le début de la chaîne.Une valeur entière zéro ou négative indique que la virgule décimale se trouve à gauche du premier chiffre.les points d' sign de paramètre à un entier indiquant le signe d' value.L'entier a la valeur 0 si value est positif et a pour valeur 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 est dans la traduction du paramètre d' count ._ecvt_s interprète count à mesure que le nombre de chiffres dans la chaîne de sortie, et _fcvt_s interprète count comme un nombre de chiffres après la virgule décimale.

En C++, grâce à cette fonction est simplifié par une surcharge de modèle ; la surcharge peut 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 Surcharges sécurisées de modèle.

La version debug de cette fonction remplit tout d'abord 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 de compatibilité, consultez Compatibilité dans l'introduction.

bibliothèques : toutes les versions de Fonctionnalités de 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

Support à virgule flottante

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_gcvt_s

_fcvt