编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
例如:“12.34“ 返回12.34
“-123.34“ 返回-123.34
函数原型:doublemy_atof(char *str)
提示:
需要在函数中判断负号,小数点,还要判断是不是数字字符。在判断小数点时需定义一个计数器来计算小数点后数字字符的个数。
#include <stdio.h> #include <math.h> double my_atof(char *str) { char *ch = str; int flag=1; int point=0; int count=0; double sum = 0; while(*ch !='\0') { if(*ch == '-') //判断负号 { flag = -1; ch++; } if(*ch == '.') { point=1; ch++; } if(*ch >= '0' && *ch <= '9') { sum=sum*10+(*ch-'0'); ch++; } if(point==1) //遇到小数点计数器加1 { count++; } } sum=flag*sum*pow(10,-count); return sum; } int main() { char *str="12.83"; double n; n=my_atof(str); printf("%f\n",n); return 0; }
时间: 2024-10-25 13:43:00