Partilhar via


_ecvt_s

Converte um double como uma seqüência numérica.Esta é uma versão do _ecvt com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.

errno_t _ecvt_s( 
   char * _Buffer,
   size_t _SizeInBytes,
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
);
template <size_t size>
errno_t _ecvt_s( 
   char (&_Buffer)[size],
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
); // C++ only

Parâmetros

  • [out]_Buffer
    Preenchido com o ponteiro para a seqüência de dígitos, o resultado da conversão.

  • [in]_SizeInBytes
    Tamanho do buffer em bytes.

  • [in]_Value
    Número a ser convertido.

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

  • [out]_Dec
    Posição do ponto decimal armazenado.

  • [out]_Sign
    Sinal do número convertido.

Valor de retorno

Zero se for bem sucedida.O valor de retorno é um código de erro, se houver uma falha.Códigos de erro são definidos no errno. h.Para obter mais informações, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

No caso de um parâmetro inválido, conforme listado na tabela a seguir, essa função chama o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, essa função define errno para EINVAL e retorna EINVAL.

Condições de erro

_Buffer

_SizeInBytes

_Value

_ Count

_Dec

_Sign

Valor de Retorno

O valorbuffer

NULL

any

any

any

any

any

EINVAL

Não modificado.

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

< = 0

any

any

any

any

EINVAL

Não modificado.

any

any

any

any

NULL

any

EINVAL

Não modificado.

any

any

any

any

any

NULL

EINVAL

Não modificado.

Problemas de segurança

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

Comentários

O _ecvt_s função converte um número de ponto flutuante em uma seqüência de caracteres.O _Value parâmetro é o número de ponto flutuante a ser convertido.Esta função armazena até count dígitos do _Value como uma seqüência de caracteres e o acrescenta um caractere nulo ('\0').Se o número de dígitos no _Value excede _Count, é arredondado para o dígito de ordem inferior.Se houver menos que count dígitos, a seqüência de caracteres é preenchido com zeros.

Somente dígitos são armazenados na seqüência de caracteres.A posição do ponto decimal e o sinal de _Value pode ser obtido em _Dec e _Sign após a chamada.O _Dec parâmetro aponta para um valor inteiro, dando a posição do ponto decimal com relação ao início da seqüência de caracteres.Um valor inteiro de 0 ou negativo indica que o ponto decimal está à esquerda do primeiro dígito.O _Sign parâmetro aponta para um número inteiro que indica o sinal do número convertido.Se o valor inteiro for 0, o número é positivo.Caso contrário, o número for negativo.

Um buffer de tamanho _CVTBUFSIZE é suficiente para qualquer valor de ponto flutuante.

A diferença entre _ecvt_s e _fcvt_s está sendo a interpretação do _Count parâmetro._ecvt_sinterpreta _Count como o número total de dígitos na cadeia de saída, enquanto _fcvt_s interpreta _Count como o número de dígitos após o ponto decimal.

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

Função

Cabeçalho necessário

Cabeçalho opcional

_ecvt_s

<stdlib.h>

<errno.h>

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

Exemplo

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

int main( )
{
  char * buf = 0;
  int decimal;
  int sign;
  int err;

  buf = (char*) malloc(_CVTBUFSIZE);
  err = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_ecvt_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

_fcvt_s

_gcvt_s