simple_str2ul

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;
}
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;//思考。。。。。。。。
}

猜你喜欢

转载自blog.csdn.net/qq_41648636/article/details/80380662
str