Compartilhar via


_gcvt_s

Converte um valor de ponto flutuante em uma seqüência de caracteres.Esta é uma versão de _gcvt com aprimoramentos de segurança conforme descrito em Aprimoramentos de segurança no CRT.

errno_t _gcvt_s( 
   char *buffer,
   size_t sizeInBytes,
   double value,
   int digits 
);
template <size_t cchStr>
errno_t _gcvt_s( 
   char (&buffer)[cchStr],
   double value,
   int digits 
); // C++ only

Parâmetros

  • [out] buffer
    Buffer para armazenar o resultado da conversão.

  • [in]sizeInBytes
    dimensionar do buffer.

  • [in]value
    Valor a ser convertido.

  • [in]digits
    Número de dígitos significativos armazenados.

Valor de retorno

Zero se for bem-sucedido.Se ocorrer uma falha devido a um parâmetro inválido (consulte a tabela a seguir para valores inválidos), o manipulador de parâmetro inválido é chamado sistema autônomo descrito em Validação de parâmetro. Se a execução terá permissão para continuar, um código de erro será retornado.Códigos de erro estão definidos no errno.h.Para obter uma lista desses erros, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

Condições de erro

buffer

sizeInBytes

value

digits

Return

Valor em buffer

NULL

any

any

any

EINVAL

Não modificado.

Not NULL (points to valid memory)

zero

any

any

EINVAL

Não modificado.

Not NULL (points to valid memory)

any

any

>= sizeInBytes

EINVAL

Não modificado.

Questões de segurança

_gcvt_s pode gerar uma violação de acesso se buffer não aponta para memória válido e não é NULL.

Comentários

The _gcvt_s função converte um ponto flutuante value a uma seqüência de caractere (que inclui uma vírgula decimal e um possível sinal byte) e armazena a seqüência de caractere em buffer. buffer deve ser grande o suficiente para acomodar o valor convertido além de um caractere nulo de terminação, que é anexado automaticamente. Um buffer de tamanho _CVTBUFSIZE é suficiente para flutuante qualquer valor de ponto. Se um dimensionar de buffer de digits + 1 é usado, a função não substituirá o participante do buffer, portanto, não deixe de fornecer um buffer suficiente para esta operação. _gcvt_s tentativas para produzir digits dígitos no formato decimal. Se não for possível, ela produz digits dígitos no formato exponencial. À direita zeros pode ser suprimida na conversão.

No C++, uso da função é simplificado pela sobrecarga de uma modelo; a sobrecarga pode inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de dimensionar.For more information, see Proteger overloads de modelo.

A versão de depurar dessa função primeiro preencherá o buffer com 0xFD.Para desabilitar esse comportamento, use _CrtSetDebugFillThreshold.

Requisitos

Rotina

Cabeçalho necessário

Cabeçalho opcional

_gcvt_s

<stdlib.h>

<erro.h>

Para obter mais informações de compatibilidade, consulte Compatibility na introdução.

Exemplo

// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main()
{
  char buf[_CVTBUFSIZE];
  int decimal;
  int sign;
  int err;

  err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);
  
  if (err != 0)
  {
     printf("_gcvt_s failed with error code %d\n", err);
     exit(1);
  }

  printf("Converted value: %s\n", buf);  
  
}

Converted value: 1.2

Equivalente do NET Framework

ToString

Consulte também

Referência

Conversão de Dados

Suporte de ponto flutuante

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_fcvt_s

_gcvt