_fcvt_s
Převede číslo s plovoucí desetinnou čárkou na řetězec. Tato funkce je verze _fcvt
s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.
Syntaxe
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
buffer
Zadaná vyrovnávací paměť, která bude obsahovat výsledek převodu.
sizeInBytes
Velikost vyrovnávací paměti v bajtech.
value
Číslo, které se má převést.
count
Počet číslic za desetinnou čárkou
dec
Ukazatel na uloženou pozici desetinné čárky.
sign
Ukazatel na indikátor uloženého znaménka.
Vrácená hodnota
Nula v případě úspěchu. Vrácená hodnota je kód chyby, pokud dojde k selhání. Kódy chyb jsou definovány v .errno.h
Seznamtěchtoch errno
_doserrno
_sys_errlist
_sys_nerr
Pokud je neplatný parametr, jak je uvedeno v následující tabulce, tato funkce vyvolá neplatnou obslužnou rutinu parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, tato funkce nastaví errno
EINVAL
a vrátí EINVAL
.
Chybové podmínky
buffer |
sizeInBytes |
value |
count |
dec |
sign |
Zpět | Hodnota v buffer |
---|---|---|---|---|---|---|---|
NULL |
jakékoliv | jakékoliv | jakékoliv | jakékoliv | jakékoliv | EINVAL |
Není změněno. |
Not NULL (odkazuje na platnou paměť) |
<=0 | jakékoliv | jakékoliv | jakékoliv | jakékoliv | EINVAL |
Není změněno. |
jakékoliv | jakékoliv | jakékoliv | jakékoliv | NULL |
jakékoliv | EINVAL |
Není změněno. |
jakékoliv | jakékoliv | jakékoliv | jakékoliv | jakékoliv | NULL |
EINVAL |
Není změněno. |
Problémy se zabezpečením
_fcvt_s
může vygenerovat porušení přístupu, pokud buffer
neodkazuje na platnou paměť a není NULL
.
Poznámky
Funkce _fcvt_s
převede číslo s plovoucí desetinnou čárkou na řetězec znaků s ukončenou hodnotou null. Parametr value
je číslo s plovoucí desetinou čárkou, které se má převést. _fcvt_s
uloží číslice value
jako řetězec a připojí znak null (\0). Parametr count
určuje počet číslic, které se mají uložit za desetinnou čárkou. Nadbytečné číslice jsou zaokrouhleny na count
místa. Pokud je přesnost menší než count
číslice, řetězec je vycpaný nulami.
V řetězci jsou uloženy pouze číslice. Pozici desetinné čárky a znak desetinné value
čárky lze získat z dec
volání a sign
za voláním. Parametr dec
odkazuje na celočíselnou hodnotu; tato celočíselná hodnota dává pozici desetinné čárky vzhledem k začátku řetězce. Nulová nebo záporná celočíselná hodnota označuje, že desetinná čárka leží vlevo od první číslice. sign
Parametr odkazuje na celé číslo označující znaménko value
. Celé číslo je nastaveno na hodnotu 0, pokud value
je kladné a je nastaveno na nenulové číslo, pokud value
je záporné.
Vyrovnávací paměť délky _CVTBUFSIZE
je dostatečná pro libovolnou hodnotu s plovoucí desetinou čárkou.
Rozdíl mezi _ecvt_s
parametrem a _fcvt_s
je v interpretaci parametru count
. _ecvt_s
interpretuje count
jako celkový počet číslic ve výstupním řetězci a _fcvt_s
interpretuje count
jako počet číslic za desetinnou čárkou.
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
Function | Požadovaný hlavičkový soubor | Volitelné záhlaví |
---|---|---|
_fcvt_s |
<stdlib.h> | <errno.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Knihovny: Všechny verze knihoven modulu runtime jazyka C.
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);
}
Converted value: 120000
Viz také
Konverze dat
Podpora pro matematiku a plovoucí desetinou čárku
atof
, _atof_l
, , _wtof
_wtof_l
_ecvt_s
_gcvt_s
_fcvt