strtoul
是一个C语言库函数,用于将字符串转换为无符号长整数
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <ctype.h>
custom_strtoul
。在这个函数中,你可以根据需要实现自定义的基数转换。下面是一个示例实现,它支持二进制、八进制、十进制和十六进制之间的转换:unsigned long custom_strtoul(const char *str, char **endptr, int base) {
unsigned long result = 0;
int valid_char = 0;
if (base < 2 || base > 36) {
if (endptr) {
*endptr = (char *)str;
}
return 0;
}
while (*str != '\0') {
int digit;
if (isdigit(*str)) {
digit = *str - '0';
} else if (isalpha(*str)) {
digit = toupper(*str) - 'A' + 10;
} else {
break;
}
if (digit >= base) {
break;
}
result = result * base + digit;
str++;
valid_char = 1;
}
if (!valid_char) {
if (endptr) {
*endptr = (char *)str;
}
return 0;
}
if (endptr) {
*endptr = (char *)str;
}
return result;
}
custom_strtoul
函数:int main() {
const char *str = "1010";
int base = 2; // 二进制转换
char *endptr;
unsigned long result;
result = custom_strtoul(str, &endptr, base);
if (*endptr == '\0') {
printf("转换结果: %lu\n", result);
} else {
printf("无法转换: %s\n", str);
}
return 0;
}
在这个示例中,我们将二进制字符串 “1010” 转换为十进制数。你可以通过修改 base
变量来实现其他进制之间的转换。请注意,这个示例仅适用于无符号整数。如果你需要处理有符号整数,可以在 custom_strtoul
函数中添加相应的逻辑。