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