_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
a la valeur NULL
, 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, 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 des fonctions mathématiques et à virgule flottante
atof
, , _atof_l
_wtof
, ,_wtof_l
_ecvt
_fcvt