Share via


_fcvt_s

Convierte un número en punto flotante en una cadena.Ésta es una versión de _fcvt con mejoras de seguridad como se describe en Características de seguridad en CRT.

errno_t _fcvt_s( 
   char* buffer,
   size_t sizeInBytes,
   double value,
   int count,
   int *dec,
   int *sign 
);
template <size_t size>
errno_t _fcvt_s( 
   char (&buffer)[size],
   double value,
   int count,
   int *dec,
   int *sign 
); // C++ only

Parámetros

  • [out] buffer
    El búfer proporcionado que contendrá el resultado de la conversión.

  • [in] sizeInBytes
    El tamaño del búfer en bytes.

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

  • [in] count
    Número de dígitos situados a continuación del signo decimal.

  • [out] dec
    puntero a la posición de separador decimal almacenada.

  • [out] sign
    Puntero al marcador almacenado de signo.

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 una lista de estos errores, 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

diciembre

sign

Return

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

_fcvt_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 _fcvt_s convierte un número en punto flotante a una cadena de caracteres terminada en null.El parámetro de value es el número de punto flotante que se va a convertir._fcvt_s almacena los dígitos de value como cadena y anexa un carácter null (“\ 0 ").El parámetro de count especifica el número de dígitos que se almacenarán después del separador decimal.Exceso de dígitos se redondean a to los lugares de count .Si hay menos que los dígitos de count de precisión, 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; este valor entero proporciona la posición del separador decimal en cuanto al principio de la cadena.Un valor entero cero o negativo indica que el separador decimal se encuentra a la izquierda del primer dígito.Los puntos de sign de parámetros a un entero que indica el signo de value.El entero se establece en 0 si value es positivo y se establece en un número distinto de cero si value 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, y _fcvt_s interpreta la 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

_fcvt_s

<stdlib.h>

<errno.h>

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

bibliotecas: todas las versiones de Características de la biblioteca CRT.

Ejemplo

// fcvt_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 = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_fcvt_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

_gcvt_s

_fcvt