_gcvt
Convierte un valor de punto flotante a una cadena, que almacena en un búfer. Una versión más segura de esta función está disponible; vea _gcvt_s.
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 del resultado.
Valor devuelto
_gcvt devuelve un puntero a la cadena de dígitos.
Comentarios
La función de _gcvt convierte value flotante en una cadena de caracteres (que incluye un separador decimal y un byte posible de signo) y almacena la cadena en buffer. buffer debe ser suficiente para alojar el valor convertido más un carácter null de terminación, que se agrega automáticamente. Si un tamaño de búfer de digits + 1 se utiliza, la función sobrescribe el fin del búfer. Esto es porque la cadena convertida incluye un separador decimal y puede contener el signo y la información del exponente. No hay disponible para el desbordamiento. _gcvt intenta generar los dígitos de digits en formato decimal. Si no puede, genera los dígitos de digits en formato exponencial. Los ceros finales se pueden suprimir en la conversión.
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.
Requisitos
Rutina |
Encabezado necesario |
---|---|
_gcvt |
<stdlib.h> |
Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.
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) );
}