C语言 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数 函数原型:double my_atof(char *str)

编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

  “-123.34“ 返回-123.34

函数原型:double my_atof(char *str)

提示:

需要在函数中判断负号,小数点,还要判断是不是数字字符。在判断小数点时需定义一个计数器来计算小数点后数字字符的个数。

#include <stdio.h>
#include <math.h>
double my_atof(char *str)  
{  
    char *ch = str;
    int flag=1;
    int point=0;
    int count=0;
    double sum = 0;
    while(*ch !='\0')
        {
            if(*ch == '-')      //判断负号  
            {  
                flag = -1;  
                ch++;  
            }
			if(*ch == ' ')
			{
				ch++;
			}
            if(*ch == '.')        
            {  
                point=1;  
                ch++;  
            }  
            if(*ch >= '0' && *ch <= '9')  
            {  
                sum=sum*10+(*ch-'0');  
                ch++;  
            }  
            if(point==1 && *ch != ' ')    //遇到小数点计数器加1  
            {  
                count++;
            }  
        }  
        sum=flag*sum*pow(10,-count);  
    return sum;  
}  
int main()  
{        
    printf("%f\n",my_atof("12.83"));  
	printf("%f\n",my_atof("-12.83")); 
	printf("%f\n",my_atof("    12.83")); 
	printf("%f\n",my_atof("-   12.83")); 
	printf("%f\n",my_atof("12.83    ")); 
    return 0;  
} 

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值