//编写函数实现库函数atof #include <stdio.h> #include <assert.h> #include <ctype.h> #include <math.h> double calculate(const char *src, int flag) { double num = 0.0; int n = 0; int count = 0; while (*src) { if ((*src >= ‘0‘) && (*src <= ‘9‘))//推断输?入是否为?非数组字符 { num = num * 10 + (*src - ‘0‘); src++; if (n) { count++; } } else if (*src == ‘.‘) { n = 1; src++; } else { num = 0; break; } } if (n) { num = num / powl(10,count); } return flag * num; } double str_to_int(const char *str) { double num = 0.0; int flag = 1; if (str != NULL && *str != ‘\0‘) { while (isspace(*str)) { str++; } if (*str == ‘+‘) str++; else if (*str == ‘-‘) { str++; flag = -1; } if (*str != ‘\0‘) { num = calculate(str, flag); } } return num; } int main() { printf("%f\n", str_to_int(" +23.45")); printf("%f\n", str_to_int(" -2.345")); printf("%f\n", str_to_int("+234.5")); printf("%f\n", str_to_int("-2345.44")); printf("%f\n", str_to_int("2345")); printf("%f\n", str_to_int("-1111.11")); printf("%f\n", str_to_int("")); printf("%f\n", str_to_int("123ab")); return 0; }
时间: 2024-12-18 13:49:19