#include <stdio.h>
#include <stdint.h>
float custom_atof(const char *str)
{
int num =0;
int sign =1;
int divisor =1;
bool dot_flag = false;
float dec = 0.0f;
while( *str == ' ' || *str =='\n' || *str =='\t')
{
str++;
}
if(*str == '-')
{
sign = -1;
str++;
}else if(*str == '+')
{
str++;
}
while(*str )
{
if(*str != '.' && dot_flag == false)
{
num = (num * 10)+((*str)-'0');
}else if(*str == '.')
{
dot_flag =true;
}else{
dec = dec *10 +(*str - '0');
divisor*=10;
}
str++;
}
return (sign * (num + dec/divisor));
}
int main() {
char str[101];
fgets(str, sizeof(str), stdin);
// Remove newline
uint8_t i = 0;
while (str[i]) {
if (str[i] == '\n') {
str[i] = '\0';
break;
}
i++;
}
float value = custom_atof(str);
printf("%.2f", value);
return 0;
}
Input
123.45
Expected Output
123.45