Sdílet prostřednictvím


_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í parametrů.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 Kód chyby, _doserrno, _sys_errlist a _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í š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

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);  
  
}
  

Ekvivalent v rozhraní .NET Framework

ToString

Viz také

Referenční dokumentace

Převod dat

Podpora s plovoucí desetinnou čárkou

atof, _atof_l, _wtof, _wtof_l

_ecvt_s

_fcvt_s

_gcvt