C语言 函数实现strtol
时间: 2023-05-21 22:02:29 浏览: 171
浅析C语言中strtol()函数与strtoul()函数的用法
5星 · 资源好评率100%
函数实现strtol的代码如下:
long int strtol(const char *str, char **endptr, int base) {
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 (isdigit(*p) || (*p >= 'a' && *p <= 'f') || (*p >= 'A' && *p <= 'F')) {
int digit;
if (isdigit(*p)) {
digit = *p - '0';
} else if (*p >= 'a' && *p <= 'f') {
digit = *p - 'a' + 10;
} else {
digit = *p - 'A' + 10;
}
if (digit >= base) {
break;
}
result = result * base + digit;
p++;
}
// 处理结束指针
if (endptr != NULL) {
*endptr = (char *)p;
}
// 处理符号
result *= sign;
return result;
}
阅读全文