_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

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

sizeInBytessizeInBytes
Dimensioni del buffer in byte.The size of the buffer in bytes.

valorevalue
Numero da convertire.Number to be converted.

countcount
Numero di cifre dopo il separatore decimale.Number of digits after the decimal point.

decdec
Puntatore alla posizione del separatore decimale archiviata.Pointer to the stored decimal-point position.

signsign
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 chiama il gestore dei parametri non validi, come descritto in Parameter Validation (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 alla EINVAL e restituisce EINVAL.If execution is allowed to continue, this function sets errno to EINVAL and returns EINVAL.

Condizioni di erroreError Conditions

bufferbuffer sizeInBytessizeInBytes predefinitovalue countcount decdec segnosign INVIOReturn Valore bufferValue in buffer
NULLNULL qualsiasiany qualsiasiany qualsiasiany qualsiasiany qualsiasiany EINVALEINVAL Non modificato.Not modified.
Non NULL (punta a valide per la memoria)Not NULL (points to valid memory) <=0<=0 qualsiasiany qualsiasiany qualsiasiany qualsiasiany EINVALEINVAL Non modificato.Not modified.
qualsiasiany qualsiasiany qualsiasiany qualsiasiany NULLNULL qualsiasiany EINVALEINVAL Non modificato.Not modified.
qualsiasiany qualsiasiany qualsiasiany qualsiasiany qualsiasiany NULLNULL EINVALEINVAL Non modificato.Not modified.

Problemi relativi alla sicurezzaSecurity Issues

fcvt_s potrebbe generare una violazione di accesso se buffer punta alla 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

Il fcvt_s funzione converte un numero a virgola mobile in una stringa di caratteri con terminazione null.The _fcvt_s function converts a floating-point number to a null-terminated character string. Il valore parametro indica il numero a virgola mobile da convertire.The value parameter is the floating-point number to be converted. fcvt_s archivia le cifre del valore sotto forma di stringa e aggiunge un carattere null ('\0')._fcvt_s stores the digits of value as a string and appends a null character ('\0'). Il conteggio parametro 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. Cifre in eccesso vengono arrotondati a conteggio inserito.Excess digits are rounded off to count places. Se ci sono meno di conteggio cifre di precisione, la stringa viene riempito di 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 valore possono essere ottenuti dalla 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 dec parametro punta a un valore intero; questo valore intero fornisce 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 valore.The parameter sign points to an integer indicating the sign of value. Il valore integer è impostato su 0 se valore è un valore positivo e viene impostato su un numero diverso da zero se valore è 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 mobile valore a virgola.A buffer of length _CVTBUFSIZE is sufficient for any floating point value.

La differenza tra ecvt_s e fcvt_s è l'interpretazione del conteggio parametro.The difference between _ecvt_s and _fcvt_s is in the interpretation of the count parameter. ecvt_s interpreta conteggio come il numero totale di cifre nella stringa di output, e fcvt_s interpreta conteggio 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_fcvt_s <stdlib.h><stdlib.h> <errno.h><errno.h>

Per altre informazioni sulla compatibilità, vedere Compatibilità.For more compatibility information, see Compatibility.

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

Conversione dei datiData Conversion
Supporto delle funzioni a virgola mobileFloating-Point Support
atof, _atof_l, _wtof, _wtof_latof, _atof_l, _wtof, _wtof_l
_ecvt_s_ecvt_s
_gcvt_s_gcvt_s
_fcvt_fcvt