_fcvt_s
Converte un numero a virgola mobile in una stringa.Si tratta di una versione di _fcvt con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in 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
Parametri
[out] buffer
Il buffer fornito che utilizzerà il risultato della conversione.[in] sizeInBytes
La dimensione del buffer in byte.[in] value
Numero da convertire.[in] count
Numero di cifre dopo il separatore decimale.[out] dec
Puntatore alla posizione del separatore decimale archiviata.[out] sign
Puntatore all'indicatore archiviato di segno.
Valore restituito
Zero se ha esito positivo.Il valore restituito è un codice di errore se c " è un errore.I codici di errore definiti in Errno.h.per un elenco di questi errori, vedere errno, _doserrno, _sys_errlist e _sys_nerr.
Nel caso di un parametro non valido, come indicato nella seguente tabella, questa funzione viene richiamato il gestore non valido di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, set di questa funzione errno in EINVAL e restituisce EINVAL.
condizioni di errore
buffer |
sizeInBytes |
valore |
Conteggio |
dicembre |
sign |
Return |
Valore in buffer |
---|---|---|---|---|---|---|---|
NULL |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
EINVAL |
non modificato. |
non NULL (punta alla memoria valida) |
<=0 |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
EINVAL |
non modificato. |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
NULL |
qualsiasi |
EINVAL |
non modificato. |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
qualsiasi |
NULL |
EINVAL |
non modificato. |
problemi di sicurezza
_fcvt_s potrebbe generare una violazione di accesso se buffer non indica la memoria valida e non viene NULL.
Note
_fcvt_s la funzione consente di convertire un numero a virgola mobile in una stringa di caratteri con terminazione null.value il parametro è il numero a virgola mobile da convertire._fcvt_s archivia le cifre di value come stringa e viene aggiunto un carattere null (" \ 0 ").count il parametro specifica il numero di cifre da archiviare dopo il separatore decimale.Le cifre in eccesso sono arrotondate all'esterno a count posizioni.Se vi sono meno che count le cifre di precisione, la stringa viene applicato il riempiti con zeri.
Solo cifre vengono archiviate nella stringa.La posizione del separatore decimale e il segno di value può essere ottenuto da dec e sign dopo la chiamata.dec punti di parametro su un valore Integer, questo valore Integer fornisce la posizione del separatore decimale in relazione all'inizio della stringa.Un valore Integer zero o negativo indica che il separatore decimale si trova a sinistra della prima cifra.il parametro sign punta a un intero che indica il segno di value.Integer è impostato su 0 se value è positivo e su un numero diverso da zero se value è negativo.
Un buffer di lunghezza _CVTBUFSIZE è sufficiente per qualsiasi valore in virgola mobile.
La differenza tra _ecvt_s e _fcvt_s è nell'interpretazione di count parametro._ecvt_s interpreta count come numero totale di cifre nella stringa di output e _fcvt_s interpreta la count come numero di cifre dopo il separatore decimale.
In C++, l'utilizzo di questa funzione viene semplificata da un overload del modello; l'overload è in grado di dedurre la lunghezza del buffer automaticamente, eliminando la necessità di specificare un argomento di dimensione.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.
La versione di debug della funzione prima inseriti nel buffer del valore 0xFD.Per disabilitare questo comportamento, utilizzare _CrtSetDebugFillThreshold.
Requisiti
Funzione |
Intestazione di associazione |
intestazione facoltativa |
---|---|---|
_fcvt_s |
<definito> |
<errno.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
raccolte: Tutte le versioni di Funzionalità della libreria CRT.
Esempio
// 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);
}