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 NULL
for , 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