#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { // Your logic here float result=0.0; int sign =1; float fraction =0.0; float divisor=1.0; if(*str=='-') { sign=-1; str++; } else if(*str=='+') { sign=1; str++; } while(*str>='0'&&*str<='9') { result=result*10+(*str-'0'); str++; } if(*str=='.') { str++; while(*str>='0'&&*str<='9') { fraction=fraction*10+(*str-'0'); divisor*=10; str++; } } result=result+(fraction/divisor); return sign*result; } 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; }
Test Cases
Test Results
Input
123.45
Expected Output