#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { // Your logic here int i=0,sign=1,num=0,num2=1,on=0; while(str[i]!='\0'){ if (i==0 && (str[i]=='+' || str[i]=='-')) { if(str[i]=='-') sign =-1; } else { if (str[i]=='.'){ on =1; } else{ num=(num*10)+str[i]-'0'; if (on==1) num2*=10; } } i++; } float ans = (float)(num*sign)/num2; return ans; } 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