_gcvt
Converte um valor de ponto flutuante como uma cadeia de caracteres, que armazena em um buffer. Uma versão mais segura dessa função está disponível; consulte _gcvt_s.
char *_gcvt(
double value,
int digits,
char *buffer
);
Parâmetros
value
Valor a ser convertido.digits
Número de dígitos significativos armazenados.buffer
Local de armazenamento do resultado.
Valor de retorno
_gcvt retorna um ponteiro para a cadeia de caracteres de dígitos.
Comentários
A função de _gcvt converte value de ponto flutuante como uma cadeia de caracteres (que inclui um ponto decimal opcional e um byte que o sinal) e armazena a cadeia de caracteres em buffer. buffer deve ser grande o suficiente para acomodar o valor convertido mais um caractere terminador nulo, que é acrescentado automaticamente. Se um tamanho do buffer de digits + 1 for usado, a função substitui a extremidade do buffer. Isso ocorre porque a cadeia de caracteres convertida inclui um ponto decimal opcional e pode conter informações de sinal e do expoente. Não há provisão para o estouro. _gcvt tenta gerar dígitos de digits em formato decimal. Se não puder, gerencia dígitos de digits no formato exponencialmente. Zeros à direita sejam suprimidos na conversão.
buffer de comprimento _CVTBUFSIZE é suficiente para qualquer valor de ponto flutuante.
Essa função valida seus parâmetros. Se buffer é NULL, o parâmetro de manipulador inválido é invocado, como descrito em Validação do parâmetro. Se a execução puder continuar, essa função definirá errno como EINVAL e retornará NULL.
Requisitos
Rotina |
Cabeçalho necessário |
---|---|
_gcvt |
<stdlib.h> |
Para obter mais informações sobre compatibilidade, consulte Compatibilidade na Introdução.
Exemplo
// 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) );
}