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;}