_fcvt_s_fcvt_s

Converte un numero a virgola mobile in una stringa.Converts a floating-point number to a string. Questa è una versione di _fcvt che include miglioramenti per la sicurezza, come descritto in Funzionalità di sicurezza in CRT.This is a version of _fcvt with security enhancements as described in Security Features in the CRT.

SintassiSyntax

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  

ParametriParameters

[out] buffer[out] buffer
Buffer specificato che conterrà il risultato della conversione.The supplied buffer that will hold the result of the conversion.

[in] sizeInBytes[in] sizeInBytes
Dimensioni del buffer in byte.The size of the buffer in bytes.

[in] value[in] value
Numero da convertire.Number to be converted.

[in] count[in] count
Numero di cifre dopo il separatore decimale.Number of digits after the decimal point.

[out] dec[out] dec
Puntatore alla posizione del separatore decimale archiviata.Pointer to the stored decimal-point position.

[out] sign[out] sign
Puntatore all'indicatore di segno archiviato.Pointer to the stored sign indicator.

Valore restituitoReturn Value

Zero in caso di esito positivo.Zero if successful. Il valore restituito è un codice di errore se si verifica un errore.The return value is an error code if there is a failure. I codici di errore sono definiti in Errno.h.Error codes are defined in Errno.h. Per un elenco di questi errori, vedere errno, _doserrno, _sys_errlist e _sys_nerr.For a listing of these errors, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Se uno parametro non è valido, come elencato nella tabella seguente, questa funzione richiama il gestore dei parametri non validi, come descritto in Convalida dei parametri.In the case of an invalid parameter, as listed in the following table, this function invokes the invalid parameter handler, as described in Parameter Validation. Se l'esecuzione può continuare, la funzione imposta errno suEINVAL e restituisce EINVAL.If execution is allowed to continue, this function sets errno to EINVAL and returns EINVAL.

Condizioni di erroreError Conditions

buffer sizeInBytes predefinitovalue countcount decdec segnosign RestituzioneReturn Valore in bufferValue in buffer
NULL qualsiasiany qualsiasiany qualsiasiany qualsiasiany qualsiasiany EINVAL Non modificato.Not modified.
Non NULL (punta alla memoria valida)Not NULL (points to valid memory) <=0<=0 qualsiasiany qualsiasiany qualsiasiany qualsiasiany EINVAL Non modificato.Not modified.
qualsiasiany qualsiasiany qualsiasiany qualsiasiany NULL qualsiasiany EINVAL Non modificato.Not modified.
qualsiasiany qualsiasiany qualsiasiany qualsiasiany qualsiasiany NULL EINVAL Non modificato.Not modified.

Problemi di sicurezzaSecurity Issues

_fcvt_s può generare una violazione di accesso se buffer non punta a una memoria valida e non è NULL._fcvt_s might generate an access violation if buffer does not point to valid memory and is not NULL.

NoteRemarks

La funzione _fcvt_s converte un numero a virgola mobile in una stringa di caratteri che termina con NULL.The _fcvt_s function converts a floating-point number to a null-terminated character string. Il parametro value è il numero a virgola mobile da convertire.The value parameter is the floating-point number to be converted. _fcvt_s archivia le cifre di value come stringa e aggiunge un carattere null ('\0')._fcvt_s stores the digits of value as a string and appends a null character ('\0'). Il parametro count specifica il numero di cifre da archiviare dopo il separatore decimale.The count parameter specifies the number of digits to be stored after the decimal point. Le cifre in eccesso vengono arrotondate a count posti.Excess digits are rounded off to count places. Se ci sono meno di count cifre, la stringa viene riempita con zeri.If there are fewer than count digits of precision, the string is padded with zeros.

Nella stringa vengono archiviate solo cifre.Only digits are stored in the string. La posizione del separatore decimale e il segno di value possono essere ottenuti da dec e sign dopo la chiamata.The position of the decimal point and the sign of value can be obtained from dec and sign after the call. Il parametro dec punta a un valore intero. Questo valore intero indica la posizione del separatore decimale rispetto all'inizio della stringa.The dec parameter points to an integer value; this integer value gives the position of the decimal point with respect to the beginning of the string. Uno zero o un valore intero negativo indica che il separatore decimale si trova a sinistra della prima cifra.A zero or negative integer value indicates that the decimal point lies to the left of the first digit. Il parametro sign punta a un numero intero che indica il segno di value.The parameter sign points to an integer indicating the sign of value. L'intero viene impostato su 0 se value è positivo e viene impostato su un numero diverso da zero se value è negativo.The integer is set to 0 if value is positive and is set to a nonzero number if value is negative.

Un buffer di lunghezza _CVTBUFSIZE è sufficiente per qualsiasi valore a virgola mobile.A buffer of length _CVTBUFSIZE is sufficient for any floating point value.

La differenza tra _ecvt_s e _fcvt_s consiste nell'interpretazione del parametro count.The difference between _ecvt_s and _fcvt_s is in the interpretation of the count parameter. _ecvt_s interpreta count come il numero totale di cifre nella stringa di output e _fcvt_s interpreta count come il numero di cifre dopo il separatore decimale._ecvt_s interprets count as the total number of digits in the output string, and _fcvt_s interprets count as the number of digits after the decimal point.

In C++ l'uso di questa funzione è semplificato da un overload del modello. L'overload può dedurre la lunghezza del buffer automaticamente, evitando la necessità di specificare un argomento di dimensione.In C++, using this function is simplified by a template overload; the overload can infer buffer length automatically, eliminating the need to specify a size argument. Per altre informazioni, vedere Secure Template Overloads.For more information, see Secure Template Overloads.

Le versioni di debug di questa funzione riempiono prima il buffer con 0xFD.The debug version of this function first fills the buffer with 0xFD. Per disabilitare questo comportamento, usare _CrtSetDebugFillThreshold.To disable this behavior, use _CrtSetDebugFillThreshold.

RequisitiRequirements

FunzioneFunction Intestazione obbligatoriaRequired header Intestazione facoltativaOptional header
_fcvt_s <stdlib.h><stdlib.h> <errno.h><errno.h>

Per altre informazioni sulla compatibilità, vedere la sezione Compatibilità nell'introduzione.For more compatibility information, see Compatibility in the Introduction.

Librerie: tutte le versioni delle funzionalità della libreria CRT.Libraries: All versions of the CRT Library Features.

EsempioExample

// 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  

Vedere ancheSee Also

Data Conversion (Conversione dei dati)Data Conversion
Floating-Point Support (Supporto delle funzioni a virgola mobile)Floating-Point Support
atof, _atof_l, _wtof, _wtof_l atof, _atof_l, _wtof, _wtof_l
_ecvt_s _ecvt_s
_gcvt_s _gcvt_s
_fcvt_fcvt