精英盒子 -> 程序设计 -> 自己写的函数:判断一个字符串是否是数字 [打印本页]

jybox 2012-06-09 00:25

自己写的函数:判断一个字符串是否是数字



如题,支持小数、支持科学计数法,以js的标准来判断是否合法

我蛋痛的写了两个版本,C++版和C版
C++的用std::string和迭代器
C的用char*...没使用任何库函数

代码有点长,贴在codepad:
C++版本:http://codepad.org/pcqmz4Et
C版本:http://codepad.org/BLrSxPem

pdl 2012-06-09 12:32
以前写过山寨atoi,支持任意底数

jybox 2012-06-10 10:33
pdl:以前写过山寨atoi,支持任意底数 (2012-06-09 12:32) 

高级货,代码拿出来瞧瞧吧

pdl 2012-06-10 18:42
jybox:
高级货,代码拿出来瞧瞧吧

刚才那个发错了
  1. double xatoi(const char* str,int base)
    {
        double number=0;
        int b=1;
        int len;
        for(len=0;str[len]!='\0';len++);
        for(int i=len-1;i>=0;i--)
        {
            if(str[i]>47&&str[i]<58)
            {
                if((str[i]-48)<base)
                {
                    number+=(str[i]-48)*b;
                    b*=base;
                }
                else
                {
                    return 0;
                }
            }
            else if(str[i]>64&&str[i]<71)
            {
                if((str[i]-55)<base)
                {
                    number+=(str[i]-55)*b;
                    b*=base;
                }
                else
                {
                    return 0;
                }
            }
            else if(str[i]>96&&str[i]<103)
            {
                if((str[i]-87)<base)
                {
                    number+=(str[i]-87)*b;
                    b*=base;
                }
                else
                {
                    return 0;
                }
            }
            else if(str[i]=='.')
            {
                number/=b;
                b=1;
            }
        }
        if(str[0]=='-')
        {
            number=-number;
        }
        return number;
    }

支持小数,负数和任意进制
呵呵,很山寨,我还做过山寨httpd,不过不支持中文,连配置文件都不读取。。

jybox 2012-06-10 22:12
pdl:刚才那个发错了
double xatoi(const char* str,int base)
{
    double number=0;
....... (2012-06-10 18:42) 

果然大牛,这么短....逻辑还是挺清晰的...

whtsky 2012-06-10 22:35
不知道是不是爪机的事...缩进看的我无比痛苦

jybox 2012-06-10 22:38
whtsky:不知道是不是爪机的事...缩进看的我无比痛苦 (2012-06-10 22:35) 

电脑还凑合,就是行高太大了

大家还是把代码往gist.github.com和codepad.org发吧

后者还可以显示运行结果




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.047259 second(s),query:5 Gzip enabled