Share via


_gcvt

Convertir une valeur à virgule flottante en chaîne, qui est stockée dans une mémoire tampon. Une version plus sécurisée de cette fonction est disponible ; voir _gcvt_s.

Syntaxe

char *_gcvt(
   double value,
   int digits,
   char *buffer
);

Paramètres

value
Valeur à convertir.

digits
Nombre de chiffres significatifs stockés.

buffer
Emplacement de stockage pour le résultat.

Valeur retournée

_gcvt retourne un pointeur désignant la chaîne de chiffres.

Notes

La fonction _gcvt convertit une value à virgule flottante en une chaîne de caractères (qui inclut une virgule décimale et, éventuellement, un octet de signe) et stocke la chaîne dans buffer. buffer doit être assez grand pour contenir la valeur convertie, plus un caractère Null de fin, qui est ajouté automatiquement. Si la taille de mémoire tampon utilisée est digits + 1, cette fonction remplace la fin de la mémoire tampon. Le remplacement se produit parce que la chaîne convertie inclut un point décimal et peut également contenir des informations de signe et d’exposant. La fonction ne tient pas compte du dépassement de capacité. _gcvt tente de produire digits chiffres au format décimal. Si ce n’est pas le cas, il produit des digits chiffres au format exponentiel. Les zéros de fin peuvent être supprimés pendant la conversion.

Une mémoire tampon (buffer) de longueur _CVTBUFSIZE est suffisante pour n’importe quelle valeur à virgule flottante.

Cette fonction valide ses paramètres. Si buffer c’est NULLle cas, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, cette fonction affecte la valeur errno à EINVAL et retourne NULL.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
_gcvt <stdlib.h>

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

Exemple

// crt_gcvt.c
// compile with: /W3
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main( void )
{
   char buffer[_CVTBUFSIZE];
   double value = -1234567890.123;
   printf( "The following numbers were converted by _gcvt(value,12,buffer):\n" );
   _gcvt( value, 12, buffer ); // C4996
   // Note: _gcvt is deprecated; consider using _gcvt_s instead
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value *= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value *= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value *= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );

   printf( "\n" );
   value = -12.34567890123;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value /= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value /= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
   value /= 10;
   _gcvt( value, 12, buffer ); // C4996
   printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}
The following numbers were converted by _gcvt(value,12,buffer):
buffer: '-1234567890.12' (14 chars)
buffer: '-12345678901.2' (14 chars)
buffer: '-123456789012' (13 chars)
buffer: '-1.23456789012e+012' (19 chars)

buffer: '-12.3456789012' (14 chars)
buffer: '-1.23456789012' (14 chars)
buffer: '-0.123456789012' (15 chars)
buffer: '-1.23456789012e-002' (19 chars)

Voir aussi

Conversion de données
Prise en charge mathématique et à virgule flottante
atof, _atof_l, _wtof, _wtof_l
_ecvt
_fcvt