欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

自己实现的atof()和atoi()代码 (转)

发布时间:2024/1/17 编程问答 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 自己实现的atof()和atoi()代码 (转) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

http://www.cppblog.com/cxiaojia/archive/2012/02/24/166436.html

(添加了判空处理)

 

//函数名:myatof
//功能:把字符串转化成double浮点型
//名字来源:my array to floating point numbers  
//函数说明:接收一个字符串判断第一个字符的符号,没有符号默认为正值,然后对剩余字符串进行转换,//遇到\0结束,最后返回一个double

double myatof(const char* sptr)
{
    double temp=10;
    bool ispnum=true;
    double ans=0;

    if(sptr==NULL)

          return 0.0;
    if(*sptr=='-')//判断是否是负数
    {
        ispnum=false;
        sptr++;
    }
    else if(*sptr=='+')//判断是否为正数
    {
        sptr++;
    }

    while(*sptr!='\0')//寻找小数点之前的数
    {
        if(*sptr=='.'){ sptr++;break;}
        ans=ans*10+(*sptr-'0');
        sptr++;
    }
    while(*sptr!='\0')//寻找小数点之后的数
    {
        ans=ans+(*sptr-'0')/temp;
        temp*=10;
        sptr++;
    }
    if(ispnum) return ans;
    else return ans*(-1);
}

//函数名:myatoi
//功能:把字符串转化成int整型
//名字来源:my array to integer  
//函数说明:接收一个字符串判断第一个字符的符号,没有符号默认为正值,然后对剩余字符串进行转换,//遇到\0结束,最后返回一个int

int myatoi(const char* sptr)
{

    bool ispnum=true;
    int ans=0;

    if(sptr==NULL)

          return -1;


    if(*sptr=='-')//判断是否是负数
    {
        ispnum=false;
        sptr++;
    }
    else if(*sptr=='+')//判断是否为正数
    {
        sptr++;
    }

    while(*sptr!='\0')//类型转化
    {
        ans=ans*10+(*sptr-'0');
        sptr++;
    }

    if(ispnum) return ans;
    else return ans*(-1);
}

转载于:https://www.cnblogs.com/wb118115/archive/2012/11/08/2761730.html

总结

以上是生活随笔为你收集整理的自己实现的atof()和atoi()代码 (转)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。