_gcvt_s_gcvt_s

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

SintassiSyntax

errno_t _gcvt_s(
   char *buffer,
   size_t sizeInBytes,
   double value,
   int digits
);
template <size_t cchStr>
errno_t _gcvt_s(
   char (&buffer)[cchStr],
   double value,
   int digits
); // C++ only

ParametriParameters

bufferbuffer
Buffer per l'archiviazione del risultato della conversione.Buffer to store the result of the conversion.

sizeInBytessizeInBytes
Dimensioni del buffer.Size of the buffer.

valorevalue
Valore da convertire.Value to be converted.

cifredigits
Numero di cifre significative archiviate.Number of significant digits stored.

Valore restituitoReturn Value

Zero in caso di esito positivo.Zero if successful. Se si verifica un errore a causa di un parametro non valido (vedere la tabella seguente per i valori non validi), viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri.If a failure occurs due to an invalid parameter (see the following table for invalid values), the invalid parameter handler is invoked as described in Parameter Validation. Se l'esecuzione può continuare, viene restituito un codice di errore.If execution is allowed to continue, an error code is returned. 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.

Condizioni di erroreError Conditions

bufferbuffer sizeInBytessizeInBytes valorevalue cifredigits INVIOReturn Valore in bufferValue in buffer
NULLNULL qualsiasiany qualsiasiany qualsiasiany EINVALEINVAL Non modificato.Not modified.
Non NULL (punta alla memoria valida)Not NULL (points to valid memory) zerozero qualsiasiany qualsiasiany EINVALEINVAL Non modificato.Not modified.
Non NULL (punta alla memoria valida)Not NULL (points to valid memory) qualsiasiany qualsiasiany >= sizeInBytes>= sizeInBytes EINVALEINVAL Non modificato.Not modified.

Problemi di sicurezzaSecurity Issues

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

NoteRemarks

Il gcvt_s funzione converte a virgola mobile valore in una stringa di caratteri (che include un separatore decimale e un possibile byte del segno) e archivia la stringa nella buffer .The _gcvt_s function converts a floating-point value to a character string (which includes a decimal point and a possible sign byte) and stores the string in buffer. buffer deve essere sufficientemente grande da contenere il valore convertito oltre a un carattere di terminazione null, che viene aggiunto automaticamente.buffer should be large enough to accommodate the converted value plus a terminating null character, which is appended automatically. Un buffer di lunghezza _CVTBUFSIZE è sufficiente per Mobile valore del punto.A buffer of length _CVTBUFSIZE is sufficient for any floating point value. Se una dimensione del buffer cifre + 1 viene usato, la funzione non sovrascriverà la fine del buffer, pertanto assicurarsi di specificare un buffer sufficiente per questa operazione.If a buffer size of digits + 1 is used, the function will not overwrite the end of the buffer, so be sure to supply a sufficient buffer for this operation. gcvt_s tenta di produrre cifre cifre nel formato decimale._gcvt_s attempts to produce digits digits in decimal format. Se non è possibile, produce cifre cifre nel formato esponenziale.If it cannot, it produces digits digits in exponential format. Gli zeri finali possono essere eliminati nella conversione.Trailing zeros can be suppressed in the conversion.

In C++ l'uso di questa funzione è semplificato da un overload del modello. L'overload può dedurre la lunghezza del buffer automaticamente, eliminando 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

RoutineRoutine Intestazione obbligatoriaRequired header Intestazione facoltativaOptional header
_gcvt_s_gcvt_s <stdlib.h><stdlib.h> <error.h><error.h>

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

EsempioExample

// crt_gcvt_s.c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

int main()
{
    char buf[_CVTBUFSIZE];
    int decimal;
    int sign;
    int err;

    err = _gcvt_s(buf, _CVTBUFSIZE, 1.2, 5);

    if (err != 0)
    {
        printf("_gcvt_s failed with error code %d\n", err);
        exit(1);
    }

    printf("Converted value: %s\n", buf);
}
Converted value: 1.2

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
_fcvt_s_fcvt_s
_gcvt_gcvt