怎样将字符串转换成长整型(不能用库函数)
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
不知道此思路可形否?异常处理即在其中。