Share via


_gcvt

Convierte un valor de punto flotante en una cadena, que almacena en un búfer. Hay disponible una versión más segura de esta función; consulte _gcvt_s.

Sintaxis

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

Parámetros

value
Valor que se va a convertir.

digits
Número de dígitos significativos almacenados.

buffer
Ubicación de almacenamiento para el resultado.

Valor devuelto

_gcvt devuelve un puntero a la cadena de dígitos.

Comentarios

La función _gcvt convierte un value de punto flotante en una cadena de caracteres (que incluye un separador decimal y un posible byte con signo) y almacena la cadena en buffer. buffer debe ser lo suficientemente grande como para contener el valor convertido más un carácter nulo final, que se anexa automáticamente. Si se usa un tamaño de búfer de digits + 1, la función sobrescribe el final del búfer. La sobrescritura se produce porque la cadena convertida incluye un separador decimal y también puede contener información de signo y exponente. La función no tiene en cuenta el desbordamiento. _gcvt intenta generar digits dígitos en formato decimal. Si no es posible, genera digits dígitos en formato exponencial. Los ceros finales podrían suprimirse en la conversión.

Un buffer de longitud _CVTBUFSIZE es suficiente para cualquier valor de punto flotante.

Esta función valida sus parámetros. Si buffer es NULL, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función establece errno en EINVAL y devuelve NULL.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

Routine Encabezado necesario
_gcvt <stdlib.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

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

Consulte también

Conversión de datos
Compatibilidad con matemáticas y punto flotante
atof, _atof_l, _wtof, _wtof_l
_ecvt
_fcvt