0对应的ascii是40 你输入后减去40就是你得到的数 然后根据输入顺序和小数点 分别每次乘以0.1就行了
#include
#include
double sTof(char *s){
double s1,s2;
int i=0;
s1 = 0;
while(s[i]!='.'&&s[i] != 0){
s1 = s1*10 +s[i] - '0';
i +=1;
}
if(s[i] == 0) return s1;
i += 1;
double k = 0.1;
s2 = 0;
while(s[i] != 0){
s2 = s2 + k*(s[i] - '0');
k = k*0.1;
i += 1;
}
return s1+s2;
}
int main(void){
char s[4096];
while(gets(s)){
printf("%lf\n",sTof(s));
}
system("pause");
return 0;
}
运行结果如下:
有函数 atof ,