编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
例 “-123.34“ 返回-123.34
函数原型:double my_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 == ' ')
{
ch++;
}
if(*ch == '.')
{
point=1;
ch++;
}
if(*ch >= '0' && *ch <= '9')
{
sum=sum*10+(*ch-'0');
ch++;
}
if(point==1 && *ch != ' ') //遇到小数点计数器加1
{
count++;
}
}
sum=flag*sum*pow(10,-count);
return sum;
}
int main()
{
printf("%f\n",my_atof("12.83"));
printf("%f\n",my_atof("-12.83"));
printf("%f\n",my_atof(" 12.83"));
printf("%f\n",my_atof("- 12.83"));
printf("%f\n",my_atof("12.83 "));
return 0;
}