atof()函数实现

来源:互联网 发布:常熟淘宝拍卖 编辑:程序博客网 时间:2024/06/05 14:35
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>int pow_my(int base,int n){    int result=1;    while(n-->0)    {        result *= base;    }    return result;}float atol_my(char *str){    int integer=0;    int i=0;    int j=0;    int sum=0;    int flag=0;    int bMinus=0;    float decimal=0.0;    //char *str=String;    int len=strlen(str);    printf("len is %d\n",len);    for(i=0;i<len;i++,str++)    {        if(*str=='.') {flag=1;continue;}  //flag  == 1  标志进入小数部分        if(*str=='-') {bMinus=1;continue;}  // bMinus=1  负数标志        if(*str!='.'&&flag==0)   //没有遇见小数点 即为整数部分        {            sum = sum * 10+(*str-'0');        }        if(flag==1)   //  进入小数部分计算        {            j++;     //计算小数的位数            decimal += (float)(*str-'0')/pow_my(10,j);        }    }    if (bMinus)    //是负数    {        return -(sum+decimal);    }    else    {        return sum+decimal;    }}int main(){    char *str=(char*)malloc(20*sizeof(char));    printf("Enter The int string Plz\n");    scanf("%s",str);    printf("it is %f\n",atol_my(str));    return 0;}