Share via


_gcvt_s

Převede hodnotu s plovoucí desetinnou čárkou na řetězec. Tato funkce je verze _gcvt s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

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

Parametry

buffer
Vyrovnávací paměť pro uložení výsledku převodu.

sizeInBytes
Velikost vyrovnávací paměti.

value
Hodnota, která se má převést.

digits
Počet uložených významných číslic

Vrácená hodnota

Nula v případě úspěchu. Pokud dojde k selhání kvůli neplatnému parametru (viz následující tabulka neplatných hodnot), vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud je možné pokračovat spuštěním, vrátí se kód chyby. Kódy chyb jsou definovány v Errno.h. Seznamtěchtoch errno_doserrno_sys_errlist_sys_nerr

Chybové podmínky

buffer sizeInBytes value digits Vrácení Hodnota v buffer
NULL jakékoliv jakékoliv jakékoliv EINVAL Není změněno.
Not NULL (odkazuje na platnou paměť) nula jakékoliv jakékoliv EINVAL Není změněno.
Not NULL (odkazuje na platnou paměť) jakékoliv jakékoliv >= sizeInBytes EINVAL Není změněno.

Problémy se zabezpečením

_gcvt_s může vygenerovat narušení přístupu, pokud buffer neodkazuje na platnou paměť a není NULL.

Poznámky

Funkce _gcvt_s převede plovoucí desetinnou čárku value na řetězec znaků (který zahrnuje desetinnou čárku a možný bajt znaménka) a uloží řetězec do buffer. buffer měla by být dostatečně velká, aby vyhovovala převedené hodnotě plus ukončující znak null, který se připojí automaticky. Vyrovnávací paměť délky _CVTBUFSIZE je dostatečná pro libovolnou hodnotu s plovoucí desetinou čárkou. Pokud se použije velikost digits vyrovnávací paměti + 1, funkce nepřepíše konec vyrovnávací paměti, proto nezapomeňte zadat dostatečnou vyrovnávací paměť pro tuto operaci. _gcvt_s se pokusí vytvořit digits číslice v desítkovém formátu. Pokud to nejde, vytvoří digits číslice v exponenciálním formátu. Koncové nuly lze v převodu potlačit.

V jazyce C++ je použití této funkce zjednodušeno přetížením šablony; přetížení může odvodit délku vyrovnávací paměti automaticky, čímž eliminuje nutnost zadat argument velikosti. Další informace naleznete v tématu Přetížení šablon zabezpečení.

Ladicí verze této funkce nejprve vyplní vyrovnávací paměť 0xFE. Chcete-li toto chování zakázat, použijte _CrtSetDebugFillThreshold.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor Volitelné záhlaví
_gcvt_s <stdlib.h> <error.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// 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

Viz také

Převod dat
Podpora pro matematiku a plovoucí desetinou čárku
atof, _atof_l, _wtof, _wtof_l
_ecvt_s
_fcvt_s
_gcvt