Compartilhar via


_gcvt_s

Converte um valor de ponto flutuante em uma seqüência de caracteres.Esta é uma versão do _gcvt com aprimoramentos de segurança, conforme descrito em Recursos 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
    Tamanho do buffer.

  • [in]value
    Valor a ser convertido.

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

Valor de retorno

Zero se for bem sucedida.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, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, será retornado um código de erro.Códigos de erro sã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

O valorbuffer

NULL

any

any

any

EINVAL

Não modificado.

Não NULL (aponta para memória válido)

zero

any

any

EINVAL

Não modificado.

Não NULL (aponta para memória válido)

any

any

> =sizeInBytes

EINVAL

Não modificado.

Problemas de segurança

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

Comentários

O _gcvt_s função converte um ponto flutuante value a uma seqüência de caracteres (que inclui uma vírgula decimal e um byte de sinal possíveis) e armazena a cadeia de caracteres buffer.bufferdeve ser grande o suficiente para acomodar o valor convertido além de um caractere nulo de terminação, que é acrescentado automaticamente.Um buffer de tamanho _CVTBUFSIZE é suficiente para flutuantes qualquer valor de ponto.Se um tamanho de buffer de digits + 1 é usado, a função não substituirá o final do buffer, portanto, não se esqueça de fornecer um buffer suficiente para esta operação._gcvt_sas tentativas de produzir digits dígitos no formato decimal.Se não for possível, ele produz digits dígitos no formato exponencial.Podem ser eliminados com zeros à direita na conversão.

No C++, usar esta função é simplificado por uma sobrecarga de modelo; a sobrecarga pode inferir comprimento do buffer automaticamente, eliminando a necessidade de especificar um argumento de tamanho.Para obter mais informações, consulte Proteger Overloads de modelo.

A versão de depuração dessa função primeiro preenche o buffer com 0xFD.Para desativar esse comportamento, use _CrtSetDebugFillThreshold.

Requisitos

Rotina

Cabeçalho necessário

Cabeçalho opcional

_gcvt_s

<stdlib.h>

<error.h>

Para obter mais informações de compatibilidade, consulte Compatibilidade 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);  
  
}
  

Equivalência 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