unsigned int simple_guess_base(const char* cp)
{
if(cp[0]==0)
{
if(cp[1]==x&&cp[2]==isxdigit) return 16;//错误
if(cp[1]==x&&isxdigit(cp[2])) return 16;//正确
else return 8;
}
else return 10;
}
{
if(cp[0]==0)
{
if(cp[1]==x&&cp[2]==isxdigit) return 16;//错误
if(cp[1]==x&&isxdigit(cp[2])) return 16;//正确
else return 8;
}
else return 10;
}
unsigned long simple_strtoul(const char* cp,char** endp,int base)
{
//判断base是否为零
if(!base) base=simple_guess_base(cp);
//如果base等于16,指针后移两位
if(base==16) cp++;
//计算字符串的字符和
while(isxdigit(*cp))
{
unsigned long value,result;
value=isdigit(*cp)?*cp-'0':*cp-'A'+10;
if(value>base) break;
result=result+value; //错误
result=result+value*base; //错误
result=result*base+value;//正确
cp++;
}
//处理endp
if(endp) *endp=(char*)cp;//思考。。。。。。。。
}
{
//判断base是否为零
if(!base) base=simple_guess_base(cp);
//如果base等于16,指针后移两位
if(base==16) cp++;
//计算字符串的字符和
while(isxdigit(*cp))
{
unsigned long value,result;
value=isdigit(*cp)?*cp-'0':*cp-'A'+10;
if(value>base) break;
result=result+value; //错误
result=result+value*base; //错误
result=result*base+value;//正确
cp++;
}
//处理endp
if(endp) *endp=(char*)cp;//思考。。。。。。。。
}