是哪出了问题?
#include<stdio.h>
#define YES 1
#define NO 2
int htoi(char s[])
{
int hexdigit;
int i;
int inhex;
int n;
i = 0;
if (s[i] == '0')
{
++i;
if (s[i] == 'x' || s[i] == 'X')
{
++i;
}
}
n = 0;
inhex = YES;
for (; inhex == YES; ++i)
{
if (s[i] >= '0' && s[i] <= '9')
{
hexdigit = s[i] - '0';
}
else if (s[i] >= 'a' && s[i] <= 'f')
{
hexdigit = s[i] - 'a' + 10;
}
else if (s[i] >= 'A' && s[i] <= 'F')
{
hexdigit = s[i] - 'A' + 10;
}
else
{
inhex = NO;
}
if (inhex == YES)
{
n = 16 * n + hexdigit;
}
}
return n;
}
int main(void)
{
int n;
char str[5] = "OX24";
n = htoi(str);
printf("string = %s integer = %d\n", str, n);
return 0;
}
此题目要求是把由十六进制数字组成的字符串(包含可选的前缀0X或0x)转换为与之等价
的整型值。字符串中包含的数字包括0~9,a~f,A~F。
我输入OX24,但得到的结果确是0. 调试观看了内存的变化,本应在判断0X后,i=2,但是现在i=0,请问是哪出了问题呢?谢谢