_ecvt_s
Převede double čísla na řetězec.Toto je verze _ecvt s vylepšení zabezpečení popsaným v Funkce zabezpečení v 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
Parametry
[výstup]_Buffer
Ukazatel na řetězec číslic, výsledek převodu vyplněna.[v]_SizeInBytes
Velikost vyrovnávací paměti v bajtech.[v]_Value
Číslo převést.[v]_Count
Počet číslic, které jsou uloženy.[výstup]_Dec
Uložené pozice desetinné čárky.[výstup]_Sign
Znak převedený číslo.
Vrácená hodnota
Nula, pokud je úspěšná.Vrácená hodnota je kód chyby, pokud nedošlo k selhání.Kódy chyb jsou definovány v Errno.h.Další informace naleznete v tématu Kód chyby, _doserrno, _sys_errlist a _sys_nerr.
Z neplatný parametr uvedené v následující tabulce této funkce vyvolá obsluhu neplatný parametr popsaným v Ověření parametrů.Pokud je povoleno spuštění pokračovat, tato funkce nastaví errno na EINVAL a vrátí EINVAL.
Chybové podmínky
_Buffer |
_SizeInBytes |
_Value |
_Count |
_Dec |
_Sign |
Vrácená hodnota |
Hodnota vbuffer |
---|---|---|---|---|---|---|---|
NULL |
žádné |
žádné |
žádné |
žádné |
žádné |
EINVAL |
Nebude změněn. |
Není NULL (odkazuje na platný paměti) |
< = 0 |
žádné |
žádné |
žádné |
žádné |
EINVAL |
Nebude změněn. |
žádné |
žádné |
žádné |
žádné |
NULL |
žádné |
EINVAL |
Nebude změněn. |
žádné |
žádné |
žádné |
žádné |
žádné |
NULL |
EINVAL |
Nebude změněn. |
Problémy se zabezpečením
_ecvt_sPokud může generovat chybu narušení přístupu buffer neodkazuje na platný paměti a není NULL.
Poznámky
_ecvt_s Funkce převede na řetězec znaků číslo s plovoucí desetinnou čárkou._Value Je parametr 8bajtové číslo převést.Tato funkce ukládá až count číslic _Value jako řetězec a přidá znak null (\0).Pokud počet číslic v _Value přesahuje _Count, nejnižší číslice se zaokrouhlí.Pokud existují méně než count číslice řetězce je doplněno nulami.
V řetězci jsou uloženy pouze číslice.Poloha desetinné čárky a znaménko _Value lze získat z _Dec a _Sign po volání._Dec Parametr odkazuje na celočíselnou hodnotu udávající polohu desetinné čárky, s ohledem na začátku řetězce.Hodnota 0 nebo záporné celé číslo označuje, že desetinnou leží nalevo od první číslice._Sign Parametr odkazuje na celé číslo označující znaménko čísla převedené.Pokud celočíselnou hodnotu 0, je číslo kladné.Jinak je záporné číslo.
Vyrovnávací paměť délky _CVTBUFSIZE je dostačující pro libovolnou hodnotu s plovoucí desetinnou čárkou.
Rozdíl mezi _ecvt_s a _fcvt_s je ve výkladu _Count parametr._ecvt_sinterpretuje _Count jako celkový počet číslic v výstupní řetězec, že _fcvt_s interpretuje _Count jako počet číslic za desetinnou čárkou.
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í šablony zabezpečení.
Ladicí verze této funkce nejprve zaplní vyrovnávací paměti s 0xFD.Toto chování lze zakázat pomocí _CrtSetDebugFillThreshold.
Požadavky
Function |
Požadované záhlaví |
Volitelné záhlaví |
---|---|---|
_ecvt_s |
<stdlib.h> |
<errno.h> |
Další informace o kompatibilitě v tématu Kompatibilita v úvodu.
Příklad
// 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);
}