Partilhar via


strtof, _strtof_l, wcstof, _wcstof_l

Converte cadeias de caracteres para um valor de ponto flutuante de precisão simples.

Sintaxe

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

Parâmetros

strSource
Cadeia de caracteres terminada em nulo a ser convertida.

endptr
Ponteiro para o caractere que interrompe o exame.

locale
A localidade a ser usada.

Valor retornado

strtof retorna o valor do número de ponto flutuante, exceto quando a representação causaria um estouro. Nesse caso, a função retorna +/-HUGE_VALF. O sinal de HUGE_VALF coincide com o sinal do valor que não pode ser representado. strtof retorna 0 se nenhuma conversão pode ser realizada ou ocorrerá um estouro negativo.

wcstof retorna valores de maneira semelhante a strtof. Para ambas as funções, errno é definido como ERANGE se ocorrer estouro ou estouro insuficiente e o manipulador de parâmetro inválido for invocado, conforme descrito em Validação de parâmetro.

Para obter mais informações sobre códigos de retorno, confira errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

Cada função converte a cadeia de caracteres de entrada strSource para um float. A função strtof converte strSource para um valor de precisão simples. strtof interrompe a leitura da cadeia de caracteres strSource no primeiro caractere que ela não puder reconhecer como parte de um número. Este pode ser o caractere nulo de terminação. wcstof é uma versão de caractere largo de strtof; seu argumento strSource é uma cadeia de caracteres largos. Caso contrário, essas funções se comportam de forma idêntica.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Mapeamentos de rotina de texto genérico

Rotina TCHAR.H _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tcstof strtof strtof wcstof
_tcstof_l _strtof_l _strtof_l _wcstof_l

A LC_NUMERIC configuração de categoria da localidade atual determina o reconhecimento do caractere de base em strSource; para obter mais informações, consulte setlocale, _wsetlocale. As funções que não têm o sufixo _l usam a localidade atual, as que usam o sufixo são idênticas, exceto por usarem o parâmetro de localidade informado em vez da localidade atual. Para obter mais informações, consulte Localidade.

Se endptr não NULLfor , um ponteiro para o caractere que interrompeu a verificação será armazenado no local apontado por endptr. Se nenhuma conversão puder ser executada (nenhum dígito válido foi encontrado ou uma base inválida foi especificada), o valor strSource será armazenado no local apontado por endptr.

strtof espera que strSource aponte para uma cadeia de caracteres do seguinte formato:

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

Um whitespace consiste em caracteres de espaço ou tabulação, que são ignorados; sign é um sinal de mais (+) ou menos (-); e digits é composto por um ou mais dígitos decimais. Se nenhum dígito aparecer antes do caractere fracionário, pelo menos um deverá aparecer após o caractere fracionário. Os dígitos decimais podem ser seguidos por um expoente, que consiste em uma letra de apresentação (e ou E) e um inteiro opcionalmente com sinal. Se nenhuma parte do expoente ou caractere de base aparecer, assume-se que um caractere de base segue o último dígito da cadeia de caracteres. O primeiro caractere que não é adequado a esse formato interrompe a verificação.

As versões UCRT dessas funções não dão suporte para a conversão de letras de expoente do estilo Fortran (d ou D). Essa extensão não padrão tinha suporte em versões anteriores do CRT e pode ser uma alteração significativa para seu código.

Requisitos

Rotina Cabeçalho necessário
strtof, _strtof_l C: <stdlib.h> C++: <cstdlib> ou <stdlib.h>
wcstof, _wcstof_l C: <stdlib.h> ou <wchar.h> C++: <cstdlib>, <stdlib.h> ou <wchar.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Conversão de dados
Suporte matemático e de ponto flutuante
Interpretação de sequências de caracteres multibyte
Localidade
String para funções de valor numérico
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