编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)例如:“12.34“ 返回12.34 “-123.34“ 返回-123.34函数原型:doublemy_
编写一个函数,,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
例如:“12.34“ 返回12.34
“-123.34“ 返回-123.34
函数原型:doublemy_atof(char *str)
提示:
需要在函数中判断负号,小数点,还要判断是不是数字字符。在判断小数点时需定义一个计数器来计算小数点后数字字符的个数。
#include
#include
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;
}