编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
例如:“12.34“ 返回12.34
“-123.34“ 返回-123.34
函数原型:double my_atof(char *str)
代码如下:
<span style="font-size:18px;">#include<stdio.h>
#include<math.h>
#include <stdlib.h>
#include <ctype.h>
double my_atof(char *str)
{
int flag = 1;
double sum = 0.0;
int count = 0;
//处理空白字符
while(*str!='\0')
{
if(isspace(*str))
str++;
else
break;
}
if(*str == '-')
flag = -1;
if(*str=='-'||*str=='+')
str++;
while(*str!='\0')
{
if(*str!='.')
{
sum=sum*10+*str-'0';
count++;
}
else
count = 0;
str++;
}
sum=sum / (pow(10.0,count));
return sum*flag;
}
int main()
{
printf("%f\n", my_atof(" -134.56"));
return 0;
}
</span>
运行结果如图所示:
"+134.56"
注意:isspace():
函数说明
检查参数c是否为空格字符,也就是判断是否为空格(' ')、水平定位字符
返回值
附加说明