_gcvt_s

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Convertit une valeur à virgule flottante en une 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é de la bibliothèque 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 décimales stockées.

Zéro si l’opération réussit. Si une défaillance se produit en raison d’un paramètre non valide (voir le tableau suivant pour les valeurs non valides), le Gestionnaire de paramètre non valide est appelé, comme décrit dans Validation de paramètre. Si l’exécution est autorisée à se poursuivre, un code d’erreur est retourné. Codes d’erreur sont définies dans Errno.h. Pour obtenir la liste de ces erreurs, consultez la page errno, _doserrno, _sys_errlist et _sys_nerr.

Conditions d’erreur

buffersizeInBytesvaluedigitsRetournerValeur debuffer
NULLanyanyanyEINVALNon modifié.
Pas NULL (pointe vers la mémoire valide)zéroanyanyEINVALNon modifié.
Pas NULL (pointe vers la mémoire valide)anyany>= sizeInBytesEINVALNon modifié.

Problèmes de sécurité

_gcvt_speut générer une violation d’accès si buffer ne pointe pas vers une mémoire valide et n’est pas NULL.

Le _gcvt_s fonction convertit un calcul en virgule flottante value à une chaîne de caractères (qui inclut une virgule et un octet de connexion possible) et stocke la chaîne dans buffer. bufferdoit être assez grande pour contenir la valeur convertie, plus un caractère null de fin est ajouté automatiquement. Une mémoire tampon de longueur _CVTBUFSIZE est suffisant pour les variables la valeur de point. Si une taille de mémoire tampon de digits + 1 est utilisé, la fonction ne remplace pas la fin de la mémoire tampon, veillez à fournir une mémoire tampon suffisante pour cette opération. _gcvt_stente de produire digits chiffres au format décimal. Si elle n’est pas le cas, il génère digits chiffres au format exponentiel. Les zéros de fin peuvent être supprimée lors de la conversion.

En C++, l’utilisation de cette fonction est simplifiée 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 Secure Template Overloads.

Tout d’abord, la version de débogage de cette fonction remplit la mémoire tampon avec 0xFD. Pour désactiver ce comportement, utilisez _CrtSetDebugFillThreshold.

RoutineEn-tête requisEn-tête facultatif
_gcvt_s<stdlib.h><error.h></error.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility dans l’introduction.

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

Converted value: 1.2  

ToString

Conversion de données
Prise en charge de virgule flottante
atof, _atof_l, _wtof, _wtof_l
_ecvt_s
_fcvt_s
_gcvt

Afficher: