Files
42_INT_01_libft/srcs/ft_atof.c
2026-04-29 00:52:48 +02:00

43 lines
694 B
C

#include <stdio.h>
#include "libft.h"
double ft_atof(const char *str)
{
double nbr;
int i;
int negatif;
double fraction;
i = 0;
negatif = 1;
nbr = 0.0;
fraction = 1.0;
// Skip leading whitespace
while ((str[i] == ' ') || (str[i] > 8 && str[i] < 14))
i++;
// Handle optional sign
if (str[i] == '-')
negatif = -1;
if (str[i] == '+' || str[i] == '-')
i++;
// Parse integer part
while (str[i] >= '0' && str[i] <= '9')
nbr = nbr * 10.0 + (str[i++] - '0');
// Parse fractional part if '.' is present
if (str[i] == '.')
{
i++;
while (str[i] >= '0' && str[i] <= '9')
{
fraction /= 10.0;
nbr += (str[i++] - '0') * fraction;
}
}
return (nbr * negatif);
}