/*htoi函数实现*/
#include <stdio.h>
#include <math.h>
#include <ctype.h>
bool mydigit(int ch)
{
if(ch > '0' && ch < '9')
return true;
return false;
}
int transfer(char ch)
{
if(mydigit(ch))
return ch - '0';
if(ch >= 'a' && ch <= 'f')
{
switch(ch)
{
case 'a':
return 10;
case 'b':
return 11;
case 'c':
return 12;
case 'd':
return 13;
case 'e':
return 14;
case 'f':
return 15;
default:
break;
}
}
else
{
return -1;
}
}
int htoi(const char *str)
{
int int_t = 0;
if(str == NULL)
return 0;
while(*str != '\0')
{
if(transfer(*str) < 0)
{
return -1;
}
int_t = int_t*16+transfer(*str++);
}
return int_t;
}
int main(void)
{
int a = 0;
a = htoi("1acda");
printf("a = %d\n",a);
return 0;
}
方法较笨,仅供参考