> 文档中心 > 100 Days of Code-day24

100 Days of Code-day24


使用atof函数,将字符串数组转化为浮点型数字(指针版本)

atof1和atof2并无较大区别,只不过第二种如果将for循环语句放入if循环语句中,就会导致pow未被初始化,使得最终结果无法得出。而第一种则在一开始就对pow变量进行了初始化,就不会出现这样的问题。

#include//convert string array to floatdouble atof1(char *s){double f,sign,pow=1.0;for (; isspace(*s); s++)//跳过空白符;sign = (*s == '-') ? -1 : 1;//负数怎么处理//浮点数有整数部分和小数部分for (f = 0.0; isdigit(*s); s++)//整数部分f = 10.0 * f + (*s - '0');if (*s == '.'){s++;for (; isdigit(*s); s++){f = 10.0 * f + (*s - '0');pow *= 10.0;}}return sign * (f / pow);}double atof2(char *s){double f, sign, pow;for (; isspace(*s); s++)//跳过空白符;sign = (*s == '-') ? -1 : 1;//负数怎么处理//浮点数有整数部分和小数部分for (f = 0.0; isdigit(*s); s++)//整数部分f = 10.0 * f + (*s - '0');if (*s == '.'){s++;}for (pow = 1.0; isdigit(*s); s++){f = 10.0 * f + (*s - '0');pow *= 10.0;}return sign * (f / pow);}int main(){char *s = "12.34";printf("%f", atof(s));return 0;}

铁三角麦克风旗舰店