_fcvt_s

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Convierte a un número de punto flotante en una cadena. Se trata de una versión de _fcvt con mejoras de seguridad, como se describe en características de seguridad de 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 contiene 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 después del separador decimal.

[out] dec
Puntero a la posición del punto decimal almacenada.

[out] sign
Puntero para el indicador de inicio de sesión almacenados.

Cero si es correcta. El valor devuelto es un código de error si se produce un error. 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 siguiente tabla, esta función invoca el controlador de parámetros no válidos, como se describe en validación del parámetro. Si la ejecución puede continuar, la función establece errno en EINVAL y devuelve EINVAL.

Condiciones de error

buffersizeInBytesvalorcountdecinicio de sesiónValor devueltoValor debuffer
NULLcualquieracualquieracualquieracualquieracualquieraEINVALNo se ha modificado.
No NULL (puntos de memoria válida)<=0anycualquieracualquieracualquieraEINVALNo se ha modificado.
anycualquieracualquieracualquieraNULLcualquieraEINVALNo se ha modificado.
anycualquieracualquieracualquieracualquieraNULLEINVALNo se ha modificado.

Problemas de seguridad

_fcvt_spuede generar una infracción de acceso si buffer no apunta a la memoria válido y no es NULL.

El _fcvt_s función convierte un número de punto flotante en una cadena de caracteres terminada en null. El value parámetro es el número de punto flotante que se va a convertir. _fcvt_salmacena los dígitos de value como una cadena y anexa un carácter nulo ('\0'). El count parámetro especifica el número de dígitos que se almacenará después del punto decimal. Dígitos sobrantes se redondean a count coloca. Si hay menos de count dígitos de precisión, la cadena se rellena con ceros.

Solo los dígitos se almacenan en la cadena. La posición de decimales y el signo de value pueden obtenerse de dec y sign después de la llamada. El dec parámetro señala a un valor entero; este valor de entero proporciona la posición del separador decimal con respecto al principio de la cadena. Un cero o valor entero negativo indica que el separador decimal se encuentra a la izquierda del primer dígito. El parámetro sign apunta 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 flotante valor de punto.

La diferencia entre _ecvt_s y _fcvt_s en la interpretación de la count parámetro. _ecvt_sinterpreta count como el número total de dígitos en la cadena de salida y _fcvt_s interpreta count como el número de dígitos después del separador decimal.

En C++, con esta función se simplifica con una sobrecarga de plantilla; la sobrecarga puede deducir la longitud de búfer automáticamente, lo que elimina la necesidad de especificar un argumento de tamaño. Para obtener más información, consulta Secure Template Overloads.

En primer lugar, la versión de depuración de esta función rellena el búfer con 0xFD. Para deshabilitar este comportamiento, use _CrtSetDebugFillThreshold.

FunciónEncabezado necesarioEncabezado opcional
_fcvt_s<stdlib.h><errno.h>

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

Bibliotecas: todas las versiones de la características de la biblioteca CRT.

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

Converted value: 120000  

ToString

Conversión de datos
Compatibilidad de punto flotante
atof, _atof_l, _wtof, _wtof_l
_ecvt_s
_gcvt_s
_fcvt

Mostrar: