_fcvt_s

 

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

Convertit un nombre à virgule flottante en une 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é de la bibliothèque 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 décimale.

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

[out] sign
Pointeur vers l’indicateur de connexion stockées.

Zéro si l’opération réussit. La valeur de retour est un code d’erreur en cas de panne. 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.

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 de paramètre. Si l'exécution est autorisée à se poursuivre, cette fonction affecte la valeur errno à EINVAL et retourne EINVAL.

Conditions d’erreur

buffersizeInBytesvaleurcountdecconnexionReturnValeur debuffer
NULLanyanyanyanyanyEINVALNon modifié.
Pas NULL (pointe vers la mémoire valide)<=0anyanyanyanyEINVALNon modifié.
anyanyanyanyNULLanyEINVALNon modifié.
anyanyanyanyanyNULLEINVALNon modifié.

Problèmes de sécurité

_fcvt_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 _fcvt_s fonction convertit un nombre à virgule flottante en une chaîne de caractères se terminant par null. Le value paramètre est le nombre à virgule flottante à convertir. _fcvt_sstocke les chiffres de value sous forme de chaîne et ajoute un caractère null ('\0'). Le count paramètre spécifie le nombre de chiffres à stocker après la virgule décimale. Chiffres en trop sont arrondies à count place. S’il y a moins de count chiffres de précision, la chaîne est rempli de zéros.

Uniquement les chiffres sont stockés dans la chaîne. La position de la virgule décimale et le signe de value peut être obtenu à partir de dec et sign après l’appel. Le dec paramètre pointe vers une valeur d’entier ; la valeur entière donne la position de la virgule décimale en ce qui concerne le début de la chaîne. Un zéro ou un entier négatif indique que la virgule décimale située à gauche du premier chiffre. Le paramètre sign pointe vers un entier indiquant le signe de value. L’entier est défini sur 0 si value est positif et est défini sur un nombre différent de zéro si value est négatif.

Une mémoire tampon de longueur _CVTBUFSIZE est suffisant pour les variables la valeur de point.

La différence entre _ecvt_s et _fcvt_s se trouve dans l’interprétation de le count paramètre. _ecvt_sinterprète count comme le nombre total de chiffres dans la chaîne de sortie, et _fcvt_s interprète count en tant que le nombre de chiffres après la virgule décimale.

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.

FonctionEn-tête requisEn-tête facultatif
_fcvt_s<stdlib.h><errno.h>

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

Bibliothèques : toutes les versions de la fonctionnalités de la bibliothèque CRT.

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

Converted value: 120000  

ToString

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

Afficher: