Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
_ecvt_s
and
div
eof
not
or
xor
Collapse the table of content
Expand the table of content
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

_ecvt_s

Convertit un nombre doubleen une chaine. Il s'agit de versions de _ecvt avec des améliorations de sécurité, comme décrit dans Fonctionnalités de sécurité dans le CRT.

errno_t _ecvt_s( 
   char * _Buffer,
   size_t _SizeInBytes,
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
);
template <size_t size>
errno_t _ecvt_s( 
   char (&_Buffer)[size],
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
); // C++ only

[out] _Buffer

Rempli avec le pointeur vers la chaîne de chiffres, le résultat de la conversion.

[in] _SizeInBytes

Taille, en octets, de la mémoire tampon.

[in] _Value

Nombre devant être converti.

[in] _Count

Nombre de chiffres stockés.

[out] _Dec

Position de la virgule décimale stockée.

[out] _Sign

Signe du nombre converti.

Zéro en cas de réussite. La valeur de retour est un code d'erreur en cas de échec. Les codes d'erreur sont définis dans ERRNO.H. Pour plus d'informations, consultez errno, _doserrno, _sys_errlist et _sys_nerr.

Dans le cas d'un paramètre non valide, comme indiqué dans le tableau suivant, 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 paramètre errno à EINVAL et renvoie EINVAL.

Conditions d'erreur

_Buffer

_SizeInBytes

_Valeur

_count

_Dec

_Sign

Valeur de retour

Valeur dans buffer

NULL

ANY

ANY

ANY

ANY

ANY

EINVAL

Non modifié

Non NULL (pointe vers la mémoire valide)

<=0

ANY

ANY

ANY

ANY

EINVAL

Non modifié

ANY

ANY

ANY

ANY

NULL

ANY

EINVAL

Non modifié

ANY

ANY

ANY

ANY

ANY

NULL

EINVAL

Non modifié

Problèmes de sécurité

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

La fonction _ecvt_s convertit un nombre à virgule flottante en une chaîne de caractères. Le paramètre _Value est le nombre à virgule flottante à convertir. Cette fonction garde jusqu'à un nombre count les chiffres de_Value en tant que chaîne et ajoute un caractère NULL ("\0 "). Si le nombre de chiffres dans _Value dépasse _Count, le chiffre d'ordre le plus bas est arrondi. S'il y a moins de chiffres quecount, la chaîne est complétées avec des zéros.

Seules les chiffres sont stockés dans la chaîne. La position de la virgule décimale et le signe de_Value peuvent être obtenus à partir de _Dec et de_Sign après l'appel. Le paramètre _Decpointe sur une valeur entière donnant la position de la virgule décimale par rapport au début de la chaine. Un entier nul ou négatif indique que la virgule décimale se trouve à gauche du premier chiffre. Le paramètre _Sign pointe sur un entier qui indique le signe du nombre converti. Si la valeur entière est 0, le nombre est positif. Sinon, le nombre 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 réside dans la traduction du paramètre d'_Count. _ecvt_s interprète _Count comme le nombre total de chiffres dans la chaîne de sortie, alors que_fcvt_s interprète _Count comme le nombre de chiffres après la virgule.

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.

Function

En-tête requis

En-tête facultatif

_ecvt_s

<stdlib.h>

<errno.h>

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

// ecvt_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 = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_ecvt_s failed with error code %d\n", err);
     exit(1);
  }

  printf("Converted value: %s\n", buf);  
  
}
Valeur convertie. 12000
Afficher:
© 2015 Microsoft