实现字符串转整数,输入字符串和n进制的整数 c语言
时间: 2024-09-28 12:12:31 浏览: 41
在C语言中,实现字符串转换成n进制的整数可以分为两个步骤:首先解析字符串并确定其表示的是多少位的数字,然后根据n进制规则将其转换为十进制整数。下面是一个简单的示例,用于将给定的字符串表示的n进制数转换为整数:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
// 定义函数将字符串转换为对应的n进制整数
int str_to_int(char *str, int base) {
int len = strlen(str);
long long result = 0;
int sign = (str[0] == '-' || str[0] == '+') ? (str[0] == '-') ? -1 : 1 : 1;
// 确保字符串的第一个字符不是负号,如果是则处理正负情况
if (sign == -1)
str++;
for (int i = 0; i < len; ++i) {
char digit = str[i];
if (digit >= '0' && digit <= '9')
digit -= '0';
else if (digit >= 'A' && digit <= 'Z')
digit -= 'A' + 10;
else if (digit >= 'a' && digit <= 'z')
digit -= 'a' + 10;
else
return -1; // 非法字符
// 根据基数计算结果
result = result * base + digit;
}
return sign * result;
}
int main() {
char input[] = "1AB"; // 输入的字符串,假设是十六进制
int base = 16;
int num = str_to_int(input, base);
if (num != -1)
printf("转换后的十进制整数是:%d\n", num);
else
printf("输入字符串非法。\n");
return 0;
}
```
在这个例子中,`str_to_int`函数接受一个字符串和一个基础基数作为参数,返回相应的整数值。注意,这个函数假设输入的字符串是合法的,如果包含非法字符,它会返回-1。
阅读全文