首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎样将字符串转换成长整型(不能用库函数),该如何解决

2012-03-03 
怎样将字符串转换成长整型(不能用库函数)long test(const char*pstr){}[解决办法]C/C++ codelong test(con

怎样将字符串转换成长整型(不能用库函数)
long test(const char*pstr)
{

}

[解决办法]

C/C++ code
long test(const char*pstr) {     long lRet = 0;    if(pstr != NULL)    {        for(int i=0; pstr[i]; i++)        {            if(pstr[i]>='0' && pstr[i]<='9')            {                 lRet = lRet*10 + pstr[i] - '0';            }            else            {                 break;            }        }    }    return lRet;}
[解决办法]
C/C++ code
/*追加正负判断*/long test(const char*pstr) {     long lRet = 0;    if (NULL==pstr || '\0'==pstr) {        return 0x7FFFFFFF;    }    if (*pstr!='-') {        while(*pstr!='\0') {           if(*pstr>='0' && *pstr<='9') lRet = lRet*10 + *pstr-'0';           else return 0x7FFFFFFF;           pstr ++;        }    }else    {        pstr ++;        while(*pstr!='\0') {           if(*pstr>='0' && *pstr<='9') lRet = lRet*10 + *pstr-'0';           else return 0x7FFFFFFF;           pstr ++;        }        lRet *= -1;    }    return lRet;}
[解决办法]
学习。。

该函数应该如下写:
int test(const char*pstr,long *Val) 


}
成功返回 0 ,主调程序使用Val中的值,异常返回非 0 值。
1、使用1次循环判断右侧字符(或者全部字符)是否有效。有效字符移入过程中声明的字符数组。
若按全部字符有效则遇无效字符时退出而返回非0值;若按取右侧有效字符时首字符无效退出返回非0值,否则舍去中间无效字符之后的字符。
2、判断字符数组中的有效长度是否超过Long的最大限量,是,返回非0值
3、自字符数组左侧循环取各数字码字符代表的数,累加到Val中,返回 0。主调程序可以使用Val。OK

不知道此思路可形否?异常处理即在其中。

热点排行