_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, tal y 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)
Vea también
Conversión de datos
Compatibilidad con cálculos matemáticos y el punto flotante
atof
, _atof_l
, , _wtof
, _wtof_l
_ecvt
_fcvt