_fcvt_s
Převede řetězec číslo s plovoucí desetinnou čárkou.Toto je verze _fcvt s vylepšení zabezpečení popsaným v Funkce zabezpečení v CRT.
errno_t _fcvt_s(
char* buffer,
size_t sizeInBytes,
double value,
int count,
int *dec,
int *sign
);
template <size_t size>
errno_t _fcvt_s(
char (&buffer)[size],
double value,
int count,
int *dec,
int *sign
); // C++ only
Parametry
[výstup]buffer
Dodaná vyrovnávací paměť, která bude uchovávat v důsledku převodu.[v]sizeInBytes
Velikost vyrovnávací paměti v bajtech.[v]value
Číslo převést.[v]count
Počet číslic za desetinnou čárkou.[výstup]dec
Ukazatel na uložené pozice desetinné čárky.[výstup]sign
Ukazatel myši na indikátor uložené přihlašovací.
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.Seznam těchto chyb naleznete v 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 |
hodnota |
počet |
DEC |
znak |
Vrátit |
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
_fcvt_sPokud může generovat chybu narušení přístupu buffer neodkazuje na platný paměti a není NULL.
Poznámky
_fcvt_s Funkce převede na řetězec znaků zakončený znakem null číslo s plovoucí desetinnou čárkou.value Je parametr 8bajtové číslo převést._fcvt_sukládá se value jako řetězec a přidá znak null (\0).count Parametr určuje počet číslic za desetinnou čárkou uloženy.Přebytek číslice se zaokrouhlí na count místa.Pokud existují méně než count platných číslic, řetězec 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; celočíselná hodnota udává pozici desetinné čárky, s ohledem na začátku řetězce.Nula nebo záporné celé číslo označuje, že desetinnou leží nalevo od první číslice.Parametr sign odkazuje na celé číslo označující znaménko value.Celé číslo, které je nastavena na 0, pokud value pozitivní a je nastavena na nenulovou číslo Pokud value je záporná.
Vyrovnávací paměť délky _CVTBUFSIZE je dostatečná pro všechny plovoucí hodnotou bodu.
Rozdíl mezi _ecvt_s a _fcvt_s je ve výkladu count parametr._ecvt_sinterpretuje count jako celkový počet číslic v řetězci výstup a _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í |
---|---|---|
_fcvt_s |
<stdlib.h> |
<errno.h> |
Další informace o kompatibilitě v tématu Kompatibilita v úvodu.
Knihovny: všech verzí Funkce knihovny CRT.
Příklad
// fcvt_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 = _fcvt_s(buf, _CVTBUFSIZE, 1.2, 5, &decimal, &sign);
if (err != 0)
{
printf("_fcvt_s failed with error code %d\n", err);
exit(1);
}
printf("Converted value: %s\n", buf);
}