// #include <stdio.h>
// #include <stdint.h>
// float custom_atof(const char *str) {
// // Your logic here
// return 0.0f;
// }
#include<stdio.h>
#include<stdint.h>
float custom_atof(const char *str){
float result = 0.0;
float fraction = 0.1;
int sign = 1;
int isFraction = 0;
if(*str == '-'){
sign =-1;
str++;
}else if(*str == '+'){
str++;
}
while(*str!='\0'){
if(*str >='0' && *str <='9'){
int digit =*str -'0';
if(!isFraction){
result =result *10 + digit;
}
else{
result = result + digit*fraction;
fraction *=0.1;
}
}
else if(*str =='.'){
if(isFraction)
break;// double . not allowed
isFraction =1;
}
else{
break;
}
str++;
}
return sign*result;
}
// int main(){
// char str[101];
// fgets(str,sizeof(str),stdin);
// 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;
// }
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