C语言 函数实现strtoul
时间: 2023-05-21 21:02:30 浏览: 207
strtoull.c
函数的实现可以参考以下代码:
unsigned long int strtoul(const char *str, char **endptr, int base) {
unsigned long int result = 0;
int sign = 1;
const char *p = str;
// 处理空格
while (isspace(*p)) {
p++;
}
// 处理符号
if (*p == '-') {
sign = -1;
p++;
} else if (*p == '+') {
p++;
}
// 处理进制
if (base == 0) {
if (*p == '0') {
base = 8;
p++;
if (*p == 'x' || *p == 'X') {
base = 16;
p++;
}
} else {
base = 10;
}
} else if (base == 16) {
if (*p == '0' && (*(p+1) == 'x' || *(p+1) == 'X')) {
p += 2;
}
}
// 处理数字
while (isalnum(*p)) {
int digit;
if (isdigit(*p)) {
digit = *p - '0';
} else {
digit = toupper(*p) - 'A' + 10;
}
if (digit >= base) {
break;
}
result = result * base + digit;
p++;
}
// 处理返回值
if (endptr != NULL) {
*endptr = (char *)p;
}
return sign * result;
}
阅读全文