Condividi tramite


_ecvt_s

Converte un oggetto double numero in una stringa.Si tratta di una versione di _ecvt con i miglioramenti della sicurezza come descritto in Funzionalità di sicurezza in CRT.

errno_t _ecvt_s( 
   char * _Buffer,
   size_t _SizeInBytes,
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
);
template <size_t size>
errno_t _ecvt_s( 
   char (&_Buffer)[size],
   double _Value,
   int _Count,
   int *_Dec,
   int *_Sign
); // C++ only

Parametri

  • [out] _Buffer
    Riempito con un puntatore alla stringa di cifre, il risultato della conversione.

  • [in] _SizeInBytes
    Dimensione del buffer in byte.

  • [in] _Value
    Numero da convertire.

  • [in] _Count
    Numero di cifre archiviate.

  • [out] _Dec
    Posizione del separatore decimale archiviata.

  • [out] _Sign
    Segno del numero convertito.

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 ulteriori informazioni, 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

_Value

_Count

_Dec

_Sign

Valore restituito

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

_ecvt_s potrebbe generare una violazione di accesso se buffer non indica la memoria valida e non viene NULL.

Note

_ecvt_s la funzione consente di convertire un numero a virgola mobile in una stringa di caratteri._Value il parametro è il numero a virgola mobile da convertire.Questa funzione contiene fino a count cifre di _Value come stringa e viene aggiunto un carattere null (" \ 0 ").Se il numero di cifre in _Value percorso _Count, la cifra meno significativa viene arrotondata.Se vi sono meno che count le cifre, 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 intero che rappresenta la posizione del separatore decimale in relazione all'inizio della stringa.Un 0 o un valore Integer negativo indica che il separatore decimale si trova a sinistra della prima cifra._Sign punti di parametro su un intero che indica il segno del numero convertito.se il valore Integer è 0, il numero è positivo.In caso contrario, il numero è negativo.

Un buffer di lunghezza _CVTBUFSIZE è sufficiente per qualsiasi valore a 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, mentre _fcvt_s interpreta _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

_ecvt_s

<definito>

<errno.h>

Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

// ecvt_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 = _ecvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
  
  if (err != 0)
  {
     printf("_ecvt_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

_fcvt_s

_gcvt_s