Share via


_gcvt_s

convierte un valor de punto flotante a una cadena.Ésta es una versión de _gcvt con mejoras de seguridad como se describe en Características de seguridad en 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
    búfer para almacenar el resultado de la conversión.

  • [in] sizeInBytes
    Tamaño del búfer.

  • [in] value
    Valor que se va a convertir.

  • [in] digits
    número de dígitos significativos almacenados.

Valor devuelto

cero si correctamente.Si un error se produce debido a un parámetro no válido (vea la tabla siguiente por valores no válidos), se invoca el controlador no válido del parámetro tal como se describe en Validación de parámetros.Si la ejecución puede continuar, se devuelve un código de error.Los códigos de error se definen en Errno.h.Para obtener una lista de estos errores, vea errno, _doserrno, _sys_errlist, y _sys_nerr.

condiciones de error

buffer

sizeInBytes

value

digits

Return

Valor de buffer

NULL

cualquier

cualquier

cualquier

EINVAL

no modificado.

No NULL (señala memoria válido)

cero

cualquier

cualquier

EINVAL

no modificado.

No NULL (señala memoria válido)

cualquier

cualquier

>= sizeInBytes

EINVAL

no modificado.

problemas de seguridad

_gcvt_s puede generar una infracción de acceso si buffer no señala memoria válida y no es NULL.

Comentarios

La función de _gcvt_s convierte value flotante en una cadena de caracteres (que incluye un separador decimal y un byte posible de signo) y almacena la cadena en buffer.buffer debe ser suficiente para alojar el valor convertido más un carácter null de terminación, que se agrega automáticamente.Un búfer de longitud _CVTBUFSIZE es suficiente para cualquier valor de punto flotante.Si un tamaño de búfer de digits + 1 se utiliza, la función no sobrescribirá el fin del búfer, de modo que esté seguro de proporcionar un búfer suficiente para esta operación._gcvt_s intenta generar los dígitos de digits en formato decimal.si no puede, genera los dígitos de digits en formato exponencial.los ceros finales se pueden suprimir en la conversión.

En C++, mediante esta función es simplificado por una sobrecarga de plantilla; la sobrecarga puede deducir longitud de búfer automáticamente, lo que elimina la necesidad de especificar un argumento size.Para obtener más información, vea Sobrecargas de plantilla de seguridad.

La versión de depuración de esta función primero rellena el búfer con 0xFD.Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.

Requisitos

rutina

Encabezado necesario

encabezado opcional

_gcvt_s

<stdlib.h>

<error.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// 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);  
  
}
  

Equivalente en .NET Framework

ToString

Vea también

Referencia

Conversión de datos

Compatibilidad de punto flotante

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_fcvt_s

_gcvt