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
函數中添加相應的邏輯。