Sdílet prostřednictvím


strtof, _strtof_l, , wcstof_wcstof_l

Převede řetězce na hodnotu s plovoucí desetinnou čárkou s jednou přesností.

Syntaxe

float strtof(
   const char *strSource,
   char **endptr
);
float _strtof_l(
   const char *strSource,
   char **endptr,
   _locale_t locale
);
float wcstof(
   const wchar_t *strSource,
   wchar_t **endptr
);
float wcstof_l(
   const wchar_t *strSource,
   wchar_t **endptr,
   _locale_t locale
);

Parametry

strSource
Řetězec ukončený hodnotou null, který se má převést.

endptr
Ukazatel na znak, který zastaví kontrolu.

locale
Národní prostředí, které se má použít

Vrácená hodnota

strtof vrátí hodnotu čísla s plovoucí desetinou čárkou, s výjimkou případů, kdy reprezentace způsobí přetečení, v takovém případě vrátí funkce +/-HUGE_VALF. Znaménko odpovídá znaménku HUGE_VALF hodnoty, kterou nelze reprezentovat. strtof vrátí hodnotu 0, pokud nelze provést žádný převod nebo dojde k podtečení.

wcstof vrátí hodnoty analogicky k strtof. U obou funkcí je nastaveno, errno jestli dojde k ERANGE přetečení nebo podtečení, a vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru.

Další informace o návratových kódech naleznete v tématu errno, _doserrno, _sys_errlista _sys_nerr.

Poznámky

Každá funkce převede vstupní řetězec strSource na .float Funkce strtof se strSource převede na hodnotu s jednou přesností. strtof přestane číst řetězec strSource na prvním znaku, který nedokáže rozpoznat jako součást čísla. Tento znak může být ukončovací znak null. wcstof je širokoznační verze strtof; jeho strSource argument je řetězec širokého znaku. Jinak se tyto funkce chovají stejně.

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.

Mapování rutin obecného textu

Rutina TCHAR.H _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_tcstof strtof strtof wcstof
_tcstof_l _strtof_l _strtof_l _wcstof_l

Nastavení LC_NUMERIC kategorie aktuálního národního prostředí určuje rozpoznávání znaku radixu v strSource; další informace naleznete v tématu setlocale, . _wsetlocale Funkce, které nemají příponu _l , používají aktuální národní prostředí. Ty, které mají příponu, jsou shodné s tím rozdílem, že místo toho používají národní prostředí, které se předá. Další informace naleznete v tématu Národní prostředí.

Pokud endptr není NULL, je ukazatel na znak, který zastavil kontrolu, uložen v umístění, na které odkazuje endptr. Pokud nelze provést žádný převod (nebyly nalezeny žádné platné číslice nebo byla zadána neplatná základna), hodnota strSource je uložena v umístění, na které odkazuje endptr.

strtofstrSource očekává, že odkazuje na řetězec následujícího formuláře:

[whitespace] [sign] [digits.] [.digits] [{e | E} [sign] digits]

Může whitespace se skládat ze znaků mezery a tabulátoru, které jsou ignorovány; sign je buď plus (+) nebo minus (-), a digits jsou jedna nebo více desetinných číslic. Pokud se před znakem radix nezobrazí žádné číslice, musí se za znakem radix objevit alespoň jedna číslice. Za desetinnými číslicemi může následovat exponent, který se skládá z úvodního písmena (e nebo E) a volitelně podepsaného celého čísla. Pokud se nezobrazí žádná exponentní část nebo znak radixu, předpokládá se, že znak radix následuje za poslední číslicí v řetězci. První znak, který se nevejde do tohoto formuláře, zastaví prohledávání.

Verze těchto funkcí UCRT nepodporují převod fortran-style (d nebo D) exponentních písmen. Toto nestandardní rozšíření bylo podporováno dřívějšími verzemi CRT a může se jednat o zásadní změnu kódu.

Požadavky

Rutina Požadovaný hlavičkový soubor
strtof, _strtof_l C: <stdlib.h> C++: <cstdlib> nebo <stdlib.h>
wcstof, _wcstof_l C: <stdlib.h> nebo <wchar.h> C++: <cstdlib, <stdlib.h>> nebo <wchar.h>

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

Příklad

// crt_strtof.c
// This program uses strtof to convert a
// string to a single-precision value.

#include <stdlib.h>
#include <stdio.h>

int main( void )
{
   char *string;
   char *stopstring;
   float x;

   string = "3.14159This stopped it";
   x = strtof(string, &stopstring);
   printf("string = %s\n", string);
   printf("   strtof = %f\n", x);
   printf("   Stopped scan at: %s\n\n", stopstring);
}
string = 3.14159This stopped it
   strtof = 3.141590
   Stopped scan at: This stopped it

Viz také

Konverze dat
Podpora pro matematiku a plovoucí desetinou čárku
Interpretace vícebajtových sekvencí znaků
Národní prostředí
Funkce řetězcových k číselným hodnotám
strtod, _strtod_l, , wcstod_wcstod_l
strtol, wcstol, , _strtol_l_wcstol_l
strtoul, _strtoul_l, , wcstoul_wcstoul_l
atof, _atof_l, , _wtof_wtof_l
localeconv
_create_locale, _wcreate_locale
_free_locale