Condividi tramite


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

Equivalente .NET Framework

ToString

Vedere anche

Riferimenti

Conversione di dati

Supporto per le operazioni in virgola mobile

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_gcvt_s

_fcvt