//编写函数实现库函数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; }
原文链接: https://www.cnblogs.com/yangykaifa/p/6915107.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/254494
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!