Partager via


_gcvt_s

Convertit une valeur à virgule flottante en chaîne.Il s'agit d'une version de _gcvt avec des améliorations de sécurité comme décrit dans Fonctionnalités de sécurité du CRT.

errno_t _gcvt_s( 
   char *buffer,
   size_t sizeInBytes,
   double value,
   int digits 
);
template <size_t cchStr>
errno_t _gcvt_s( 
   char (&buffer)[cchStr],
   double value,
   int digits 
); // C++ only

Paramètres

  • [out] buffer
    Mémoire tampon pour stocker le résultat de la conversion.

  • [in] sizeInBytes
    taille de la mémoire tampon.

  • [in] value
    Valeur à convertir.

  • [in] digits
    Nombre de chiffres significatifs enregistrés.

Valeur de retour

Zéro si l'opération a réussi.Si une erreur se produit en raison d'un paramètre non valide (consultez le tableau suivant pour les valeurs valides), le gestionnaire de paramètre non valide est appelé comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, le code d'erreur est retourné.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.

conditions d'erreur

buffer

sizeInBytes

value

digits

Return

valeur dans buffer

NULL

quels

quels

quels

EINVAL

non modifié.

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

zéro

quels

quels

EINVAL

non modifié.

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

quels

quels

>= sizeInBytes

EINVAL

non modifié.

problèmes de sécurité

_gcvt_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' _gcvt_s convertit value à virgule flottante à une chaîne de caractères (qui inclut une virgule et un octet possible de signe) et enregistre la chaîne dans buffer.buffer doit être assez grand pour recevoir à la valeur convertie plus un caractère NULL de fin, qui est ajouté automatiquement.Une mémoire tampon de longueur _CVTBUFSIZE est suffisante pour toute valeur à virgule flottante.Si une taille de la mémoire tampon d' digits + 1 est utilisée, la fonction ne remplace pas la fin de la mémoire tampon, ce soit veillez donc à fournir une mémoire tampon suffisante pour cette opération.tente d'_gcvt_s de produire des chiffres de digits au format décimal.Si ce n'est pas le cas, elle produit des chiffres de digits au format exponentiel.Les zéros de fin peuvent être supprimées de la conversion.

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

routine

en-tête requis

en-tête facultatif

_gcvt_s

<stdlib.h>

<error.h>

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

Exemple

// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main()
{
  char buf[_CVTBUFSIZE];
  int decimal;
  int sign;
  int err;

  err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);
  
  if (err != 0)
  {
     printf("_gcvt_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

_fcvt_s

_gcvt