Partager via


_gcvt_s

Convertit une valeur à virgule flottante en une chaîne. Il s'agit de versions de _gcvt avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le 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 les résultats de la conversion.

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

  • [in] value
    Valeur à convertir.

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

Valeur de retour

Zéro en cas de réussite. Si une défaillance se produit en raison d'un paramètre non valide (voir le tableau suivant pour les valeurs valides), le gestionnaire de paramètre non valide est appelée comme décrit dans Validation de paramètre. Si l'exécution est autorisée de continuer, le code d'erreur est retourné. 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.

Conditions d'erreur

buffer

sizeInBytes

value

digits

Return

Valeur dans buffer

NULL

any

any

any

EINVAL

Non modifié

Non NULL (pointe vers la mémoire valide)

zéro

any

any

EINVAL

Non modifié

Non NULL (pointe vers la mémoire valide)

any

any

>= sizeInBytes

EINVAL

Non modifié

Problèmes de sécurité

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

Notes

La fonction _gcvt_s convertit un value à virgule flottante en une chaîne de caractères (incluant une virgule et éventuellement un octet de signe) et enregistre la chaîne dans buffer. buffer doit être suffisamment grande pour contenir la valeur convertie et 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 mémoire tampon d'digits + 1 est utilisée, la fonction ne remplace pas la fin de la mémoire tampon, veillez à fournir un tampon suffisante pour cette opération. _gcvt_s tente de générer des chiffres digits au format décimal. S'il est impossible, il génère des chiffres digits au format exponentiel. Les zéros à droite peuvent être supprimés de la conversion.

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

Routine

En-tête requis

En-tête facultatif

_gcvt_s

<stdlib.h>

<error.h>

Pour plus d'informations sur la 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

Prise en charge de la virgule flottante

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_fcvt_s

_gcvt