将代码中的变量类型从int改为unsigned int,这样可以确保返回的值为正数。具体代码示例如下:
#include <stdio.h>
#include <ctype.h>
unsigned int htoi(const char s[]) {
unsigned int hex_val = 0;
int i = 0;
if (s[0] == '0' && tolower(s[1]) == 'x') {
i = 2;
}
while (s[i] != '\0') {
if (isdigit(s[i])) {
hex_val = 16 * hex_val + (s[i] - '0');
} else if (isalpha(s[i])) {
hex_val = 16 * hex_val + (tolower(s[i]) - 'a' + 10);
} else {
break;
}
i++;
}
return hex_val;
}
int main() {
char s[] = "0xABCD";
unsigned int result = htoi(s);
printf("%u\n", result); // 输出43981
return 0;
}