#include <stdio.h> #include <stdint.h> #include <ctype.h> #include <string.h> float custom_atof(const char *str) { float number = 0; char buffer[256]; uint8_t buffer_index=0; memset(buffer,'\0',sizeof(buffer)); for(int i=0; str[i]!='\0'; i++) { if(isdigit(str[i]) || str[i]=='.' || str[i]=='-' || str[i]=='+') { buffer[buffer_index] = str[i]; buffer_index++; } } buffer[buffer_index] = '\0'; sscanf(buffer,"%f",&number); return number; } 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