Exportar (0) Imprimir
Expandir todo
and
div
eof
not
or
xor
Expandir Minimizar
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

_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 de 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

[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.

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, la función establece errno en EINVAL y devuelve EINVAL.

Condiciones de error

_Buffer

_SizeInBytes

_Value

_Count

_Dec

_Sign

Valor devuelto

Valor de buffer

NULL

any

any

any

any

any

EINVAL

No modificado.

No NULL (señala memoria válido)

<=0

any

any

any

any

EINVAL

No modificado.

any

any

any

any

NULL

any

EINVAL

No modificado.

any

any

any

any

any

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.

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 seguras.

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

Función

Encabezado necesario

Encabezado opcional

_ecvt_s

<stdlib.h>

<errno.h>

Para obtener más información sobre compatibilidad, vea Compatibilidad en la introducción.

// 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);  
  
}
Valor convertido: 12000

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft