編寫一個函數,將一個數字字符串轉換成這個字符串對應的數字(包括正浮點數、負浮點數)
例如:“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;
}