_gcvt
Convertit une valeur en virgule flottante en une chaîne, qu'elle stocke dans une mémoire tampon. Des versions plus sécurisées de ces fonctions sont disponibles ; consultez _gcvt_s.
char *_gcvt(
double value,
int digits,
char *buffer
);
Paramètres
value
Valeur à convertir.digits
Nombre de chiffres significatifs stockés.buffer
Emplacement de stockage du résultat.
Valeur de retour
_gcvt retourne un pointeur vers la chaîne de chiffres.
Notes
La fonction _gcvt convertit un value à virgule flottante en une chaîne de caractères (incluant une virgule et éventuellement un octet de signe) et enregistre la chaîne dans buffer. buffer doit être suffisamment grande pour contenir la valeur convertie et un caractère NULL de fin, qui est ajouté automatiquement. Si une taille de mémoire tampon valant digits + 1 est utilisée, la fonction remplace la fin de la mémoire tampon. Cela est dû au fait que la chaîne convertie inclut une virgule et peut contenir des informations de signe et d'exposant. Il n'y a aucune provision pour un dépassement de capacité. _gcvt tente de générer des chiffres digits au format décimal. S'il est impossible, il génère des chiffres digits au format exponentiel. Les zéros à droite peuvent être supprimés de la conversion.
Une buffer de longueur _CVTBUFSIZE est suffisante pour n'importe quelle valeur à virgule flottante.
Cette fonction valide ses paramètres. Si buffer est NULL, le gestionnaire de paramètres non valides est appelé, 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 NULL.
Configuration requise
Routine |
En-tête requis |
---|---|
_gcvt |
<stdlib.h> |
Pour plus d'informations sur la compatibilité, consultez Compatibilité dans l'introduction.
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) );
}