1. 程式人生 > >【C語言】編寫一個函式,將一個數字字串轉換成這個字串對應的數字(包括正浮點數、負浮點數)

【C語言】編寫一個函式,將一個數字字串轉換成這個字串對應的數字(包括正浮點數、負浮點數)

//編寫一個函式,將一個數字字串轉換成這個字串對應的數字(包括正浮點數、負浮點數)
//例如:“12.34“  	返回12.34.   "   -12.34"  返回12.34
#include<stdio.h>  
#include<math.h>  
#include<assert.h>
double my_atof(char *str)  
{    
	
    int flag=0;   
    int count = 0;  
    int ret = 1;  
    double sum = 0;
	assert(NULL!=str); 
    while(*str != '\0')  
    {    
       if(*str == '-')  
       {  
          ret = -1;  
          str++;  
       }  
       if(*str == '.')  
       {  
           flag = 1 ;  
           str ++;  
       }  
       if(*str >= '0' && *str <= '9')  
       {  
         sum = sum*10 + (*str - '0');  
           
         if(flag == 1)  
         {  
           count ++;  
         }  
       }  
       str++;  
    }  
     sum = sum /pow(10,count);  
     return ret*sum;  
}  
int main()  
{  
   char p[]=" -52.36 ";    
   printf("%f\n",my_atof(p));  
   return 0;  
}
<img src="https://img-blog.csdn.net/20150403140644994?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />