编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
例如:“12.34“ 返回12.34
#include <stdio.h>
#include <math.h>
int main()
{
double my_atof(char *str);
double i;
char str[] = " +183.23";
i = my_atof(str); //调用函数
printf("%f",i);
return 0;
}
double my_atof(char *str)
{
double ret = 0.0;
double sign = 1.0;
double count = 0.0;
while( *str == ' ' )
{
str++; //为空格str++
}
if( *str == '-' )
{
sign = -1.0; //为负号,标记一个数为-1
str++;
}
if( *str == '+' )
str++; //为正号,str++
while( *str >= '0' && *str <= '9' )
{
ret = ret*10+*str-'0'; //为数字
str++;
}
if( *str == '.' )
{
str++; //为小数点,str++
}
while( *str )
{
count++; //标记小数点后的位数
ret = ret*10+*str-'0';
str++;
}
ret = ret*sign/pow(10,count); //计算出ret
return ret;
}