_gcvt_s
Hodnota s plovoucí desetinnou čárkou se převede na řetězec.Toto je verze _gcvt s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.
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
[výstup]buffer
Vyrovnávací paměť k ukládání výsledků převodu.[v]sizeInBytes
Velikost vyrovnávací paměti.[v]value
Hodnota má být převeden.[v]digits
Počet platných číslic, které jsou uloženy.
Vrácená hodnota
Nula, pokud je úspěšná.Pokud dojde k selhání kvůli neplatný parametr (viz následující tabulka neplatné hodnoty), parametr neplatný popisovač je vyvoláno popsaným v Ověření parametru.Pokud je povoleno spuštění pokračovat, je vrácena kód chyby.Kódy chyb jsou definovány v Errno.h.Seznam těchto chyb naleznete v errno, _doserrno, _sys_errlist, and _sys_nerr.
Chybové podmínky
buffer |
sizeInBytes |
value |
digits |
Vrátit |
Hodnota vbuffer |
---|---|---|---|---|---|
NULL |
žádné |
žádné |
žádné |
EINVAL |
Nebude změněn. |
Není NULL (odkazuje na platný paměti) |
nula |
žádné |
žádné |
EINVAL |
Nebude změněn. |
Není NULL (odkazuje na platný paměti) |
žádné |
žádné |
> =sizeInBytes |
EINVAL |
Nebude změněn. |
Problémy se zabezpečením
_gcvt_smůžete generovat chybu narušení přístupu, pokud buffer neodkazuje na platný paměti a není NULL.
Poznámky
_gcvt_s Funkce převede čárce value na řetězec znaků (která obsahuje desetinnou čárku a možné podepsat byte) a ukládá řetězec v buffer.buffermusí být dostatečně velké pro uchování převedené hodnoty plus ukončujícím znakem null je automaticky připojen.Vyrovnávací paměť délky _CVTBUFSIZE je dostatečná pro všechny plovoucí hodnotou bodu.Pokud velikost vyrovnávací paměti digits + 1 je použita, funkce nepřepíše konec vyrovnávací paměti, takže je nutné poskytnout dostatečné vyrovnávací paměť pro operaci._gcvt_spokusy o vytvoření digits číslic v desítkovém formátu.Pokud jej nelze, vytváří digits ve formátu exponenciální číslic.Při převodu lze potlačit koncové nuly.
V jazyce C++ použití této funkce je zjednodušeno díky šablony přetížení; přetížení lze odvodit vyrovnávací paměti automaticky, není tedy třeba zadat argument velikost.Další informace naleznete v tématu Přetížení zabezpečení šablony.
Ladicí verze této funkce nejprve zaplní vyrovnávací paměti s 0xFD.Toto chování lze zakázat pomocí _CrtSetDebugFillThreshold.
Požadavky
Rutina |
Požadované záhlaví |
Volitelné záhlaví |
---|---|---|
_gcvt_s |
<stdlib.h> |
<error.h> |
Další informace o kompatibilitě v tématu Kompatibilita v úvodu.
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);
}