#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { // Your logic here float ans = 0.0f, pwr = 1; int flag = 0; while (*str != '\0') { if (*str == '+') flag = 0; else if (*str == '-') flag = 1; else if (*str == '.') pwr = 10.0f; else { if (pwr == 1) { ans = ans * 10.0f + (*str - '0'); } else { ans += (float)(*str - '0')/pwr; pwr *= 10.0f; } } str++; } return flag ? -ans : 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