Compartir a través de


strtof, _strtof_l, , wcstof, _wcstof_l

Convierte las cadenas en un valor de punto flotante de precisión sencilla.

Sintaxis

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
Cadena terminada en NULL que se va a convertir.

endptr
Puntero al carácter que detiene el examen.

locale
Configuración regional que se va a usar.

Valor devuelto

strtof devuelve el valor del número de punto flotante, excepto si la representación fuera a producir un desbordamiento, en cuyo caso la función devuelve +/-HUGE_VALF. El signo de HUGE_VALF coincide con el signo del valor que no se puede representar. strtof devuelve 0 si no se puede efectuar ninguna conversión o si se produce un subdesbordamiento.

wcstof devuelve valores de manera parecida a strtof. Para ambas funciones, errno se establece ERANGE en si se produce desbordamiento o subflujo y se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros.

Para obtener más información sobre los códigos de retorno, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

Cada función convierte la cadena de entrada strSource en un float. La función strtof convierte strSource en un valor de precisión sencilla. strtof deja de leer la cadena strSource en el primer carácter que no reconoce como parte de un número. Este puede ser el carácter nulo de terminación. wcstof es una versión con caracteres anchos de strtof; su argumento strSource es una cadena de caracteres anchos. Por lo demás, estas funciones se comportan exactamente igual.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_tcstof strtof strtof wcstof
_tcstof_l _strtof_l _strtof_l _wcstof_l

El LC_NUMERIC valor de categoría de la configuración regional actual determina el reconocimiento del carácter radix en strSource; para obtener más información, vea setlocale, _wsetlocale. Las funciones que no tienen el sufijo _l usan la configuración regional actual; las que tienen el sufijo son idénticas, salvo que usan la configuración regional que se pasa. Para obtener más información, vea Locale.

Si endptr no NULLes , un puntero al carácter que detuvo el examen se almacena en la ubicación a endptrla que apunta . Si no se puede efectuar ninguna conversión (no se encontraron dígitos válidos o se especificó una base no válida), el valor de strSource se almacena en la ubicación a la que señala endptr.

strtof espera que strSource señale a una cadena con el formato siguiente:

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

Un whitespace puede constar de caracteres de espacio y de tabulación, que se omiten; sign es más (+) o menos (-); y digits se refiere a uno o varios dígitos decimales. Si no aparece ningún dígito antes del carácter de base, debe aparecer al menos uno después del carácter de base. Los dígitos decimales pueden ir seguidos de un exponente, que consta de una letra inicial (e o E) y un entero con signo optativo. Si no aparece ni una parte exponencial ni un carácter de base, se supone que un carácter de base sigue al último dígito de la cadena. El primer carácter que no se ajuste a este formato detiene el análisis.

Las versiones UCRT de estas funciones no admiten la conversión de letras como exponente de estilo Fortran (d o D). Esta extensión no estándar era compatible con versiones anteriores de CRT y puede que sea un cambio decisivo para el código.

Requisitos

Routine Encabezado necesario
strtof, _strtof_l C: <stdlib.h> C++: <cstdlib> o <stdlib.h>
wcstof, _wcstof_l C: <stdlib.h> o <wchar.h> C++: <cstdlib>, <stdlib.h> o <wchar.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

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

Vea también

Conversión de datos
Compatibilidad con cálculos matemáticos y el punto flotante
Interpretación de secuencias de caracteres de varios bytes
Configuración regional
Funciones de cadena a 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