#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { // Your logic here float num=0.00; int i=0; if (*(str+i)=='+' || *(str+i)=='-') i=1; while( *(str+i)!='.'){ char ch=*(str+i); if (ch == '\0') break; num=(num*10)+ch-'0'; i++; } if (*(str+i)!='\0') i++; float div_ten=10.0; while(*(str+i)!='\0'){ char ch=*(str+i); num+=(ch-'0')/div_ten; div_ten*=10; i++; } if (*(str)=='-') num*=(-1); return num; } 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