Share via


_ecvt_s

Convierte un número de double en una cadena.Ésta es una versión de _ecvt con mejoras de seguridad como se describe en Características de seguridad en 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
    Relleno con el puntero a la cadena de dígitos, el resultado de la conversión.

  • [in] _SizeInBytes
    Tamaño del búfer en bytes.

  • [in] _Value
    Número que se va a convertir.

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

  • [out] _Dec
    posición de separador decimal almacenada.

  • [out] _Sign
    Signo de número convertido.

Valor devuelto

cero si correctamente.el valor devuelto es un código de error si hay un error.Los códigos de error se definen en Errno.h.Para obtener más información, vea errno, _doserrno, _sys_errlist, y _sys_nerr.

En el caso de un parámetro no válido, como se muestra en la tabla siguiente, esta función invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, conjuntos errno de esta función a EINVAL y devuelven EINVAL.

condiciones de error

_Buffer

_SizeInBytes

_Value

_Count

_Dec

_Sign

Valor devuelto

Valor de buffer

NULL

cualquier

cualquier

cualquier

cualquier

cualquier

EINVAL

no modificado.

No NULL (señala memoria válido)

<=0

cualquier

cualquier

cualquier

cualquier

EINVAL

no modificado.

cualquier

cualquier

cualquier

cualquier

NULL

cualquier

EINVAL

no modificado.

cualquier

cualquier

cualquier

cualquier

cualquier

NULL

EINVAL

no modificado.

problemas de seguridad

_ecvt_s podría generar una infracción de acceso si buffer no señala memoria válida y no es NULL.

Comentarios

la función de _ecvt_s convierte un número en punto flotante a una cadena de caracteres.El parámetro de _Value es el número de punto flotante que se va a convertir.Esta función almacena hasta count dígitos de _Value como cadena y anexa un carácter null (“\ 0 ").si el número de dígitos en _Value supera _Count, se redondea el dígito de orden inferior.Si hay menos que los dígitos de count , la cadena se rellena con ceros.

Sólo dígitos se almacenan en la cadena.La posición del separador decimal y el signo de _Value se pueden obtener de _Dec y de _Sign después de la llamada.Los puntos del parámetro de _Dec a un valor entero que indica la posición del separador decimal con respecto al principio de la cadena.Un 0 o un valor entero negativo indica que el separador decimal se encuentra a la izquierda del primer dígito.Los puntos del parámetro de _Sign a un entero que indica el signo de número convertido.si el valor entero es 0, el número es positivo.si no, el número es negativo.

Un búfer de longitud _CVTBUFSIZE es suficiente para cualquier valor de punto flotante.

La diferencia entre _ecvt_s y _fcvt_s está en la del parámetro de _Count ._ecvt_s interpreta _Count como el número total de dígitos en la cadena de salida, mientras que _fcvt_s interpreta _Count como el número de dígitos después del separador decimal.

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

Función

Encabezado necesario

encabezado opcional

_ecvt_s

<stdlib.h>

<errno.h>

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

Ejemplo

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

Equivalente en .NET Framework

ToString

Vea también

Referencia

Conversión de datos

Compatibilidad de punto flotante

atof, _atof_l, _wtof, _wtof_l

_ecvt

_fcvt_s

_gcvt_s