_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