Sdílet prostřednictvím


_ecvt_s

double Převede číslo na řetězec. Tato funkce je verze _ecvt s vylepšeními zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.

Syntaxe

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

buffer
Vyplněno ukazatelem na řetězec číslic, výsledek převodu.

sizeInBytes
Velikost vyrovnávací paměti v bajtech.

value
Číslo, které se má převést.

count
Počet uložených číslic

dec
Uložená pozice desetinné čárky

sign
Znaménko převedeného čísla

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. Další informace naleznete v tématu errno, _doserrno, _sys_errlista _sys_nerr.

Pokud existuje 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 hodnotu EINVAL, a vrátí EINVAL.

Chybové podmínky

buffer sizeInBytes value count dec sign Vrácená hodnota 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

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

Poznámky

Funkce _ecvt_s převede číslo s plovoucí desetinnou čárkou na řetězec znaků. Parametr value je číslo s plovoucí desetinou čárkou, které se má převést. Tato funkce ukládá až count číslice value jako řetězec a připojí znak null (\0). Pokud počet číslic překročí value count, zaokrouhlí se číslice s nízkým pořadím. Pokud existuje méně než count číslic, ř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, která dává pozici desetinné čárky vzhledem k začátku řetězce. 0 nebo záporná celočíselná hodnota označuje, že desetinná čárka leží vlevo od první číslice. Parametr sign odkazuje na celé číslo, které označuje znaménko převedeného čísla. Pokud je celočíselná hodnota 0, je číslo kladné. V opačném případě je číslo 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, zatímco _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í
_ecvt_s <stdlib.h> <errno.h>

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

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);
}
Converted value: 12000

Viz také

Konverze dat
Podpora pro matematiku a plovoucí desetinou čárku
atof, _atof_l, , _wtof_wtof_l
_ecvt
_fcvt_s
_gcvt_s