练习 2-3
编写函数 htoi(s),把由十六进制数字组成的字符串(包含可选的前缀 0x
或 0X)转换为与之等价的整型值。字符串中允许包含的数字包括:0~9、a~f 以及 A~F。
#include <stdio.h>
/* htoi: convert s to integer */
int htoi(char s[])
{
int i, n;
n = 0;
i = 0;
if(s[0] == '0' && s[1] == 'x' || s[1] == 'X')
i = 2;
for(; s[i] != '\0'; i++)
{
if(s[i] >= '0' && s[i] <= '9')
n = n * 16 + s[i] - '0';
else if(s[i] >= 'a' && s[i] <= 'f')
n = n * 16 + s[i] - 'a' + 10;
else if(s[i] >= 'A' && s[i] <= 'F')
n = n * 16 + s[i] - 'A' + 10;
else
printf("wrong number");
}
return n;
}