Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Převede hodnotu s plovoucí desetinnou čárkou na řetězec, který ukládá do vyrovnávací paměti. K dispozici je bezpečnější verze této funkce; viz ._gcvt_s
Syntaxe
char *_gcvt(
double value,
int digits,
char *buffer
);
Parametry
value
Hodnota, která se má převést.
digits
Počet uložených významných číslic
buffer
Umístění úložiště pro výsledek
Vrácená hodnota
_gcvt vrátí ukazatel na řetězec číslic.
Poznámky
Funkce _gcvt převede plovoucí desetinnou čárku value na řetězec znaků (který zahrnuje desetinnou čárku a možný bajt znaménka) a uloží řetězec do buffer. Hodnota buffer by měla být dostatečně velká, aby vyhovovala převedené hodnotě plus ukončující znak null, který se připojí automaticky. Pokud se použije velikost digits vyrovnávací paměti + 1, funkce přepíše konec vyrovnávací paměti. Přepsání proběhne, protože převedený řetězec obsahuje desetinnou čárku a může obsahovat také znaménko a exponentní informace. Funkce nebere v úvahu přetečení. _gcvt se pokusí vytvořit digits číslice v desítkovém formátu. Pokud to nejde, vytvoří digits číslice v exponenciálním formátu. Koncové nuly mohou být při převodu potlačeny.
Délka buffer _CVTBUFSIZE je dostatečná pro libovolnou hodnotu s plovoucí desetinou čárkou.
Tato funkce ověří své parametry. Pokud buffer je NULL, je vyvolána neplatná obslužná rutina 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í NULL.
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
| Rutina | Požadovaný hlavičkový soubor |
|---|---|
_gcvt |
<stdlib.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// crt_gcvt.c
// compile with: /W3
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main( void )
{
char buffer[_CVTBUFSIZE];
double value = -1234567890.123;
printf( "The following numbers were converted by _gcvt(value,12,buffer):\n" );
_gcvt( value, 12, buffer ); // C4996
// Note: _gcvt is deprecated; consider using _gcvt_s instead
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value *= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
printf( "\n" );
value = -12.34567890123;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
value /= 10;
_gcvt( value, 12, buffer ); // C4996
printf( "buffer: '%s' (%d chars)\n", buffer, strlen(buffer) );
}
The following numbers were converted by _gcvt(value,12,buffer):
buffer: '-1234567890.12' (14 chars)
buffer: '-12345678901.2' (14 chars)
buffer: '-123456789012' (13 chars)
buffer: '-1.23456789012e+012' (19 chars)
buffer: '-12.3456789012' (14 chars)
buffer: '-1.23456789012' (14 chars)
buffer: '-0.123456789012' (15 chars)
buffer: '-1.23456789012e-002' (19 chars)
Viz také
Konverze dat
Podpora pro matematiku a plovoucí desetinou čárku
atof, _atof_l, , _wtof_wtof_l
_ecvt
_fcvt