c语言8进制转10进制
时间: 2024-07-30 17:00:31 浏览: 27
在C语言中,将8进制数转换为10进制数,你可以使用`atoi()`函数或者手动计算每一位的值。下面是两种方法:
1. 使用`atoi()`函数:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char octal_string[100];
int decimal;
// 输入或读取8进制数
printf("Enter an octal number: ");
fgets(octal_string, sizeof(octal_string), stdin);
// 去除换行符
octal_string[strcspn(octal_string, "\n")] = '\0';
// 使用 atoi() 函数转换
decimal = atoi(octal_string);
printf("Decimal representation: %d\n", decimal);
return 0;
}
```
在这个例子中,`atoi()`会自动处理8进制数并返回对应的10进制值。
2. 手动计算:
```c
#include <stdio.h>
int main() {
char octal_string[100];
int decimal = 0, i, base = 1;
printf("Enter an octal number: ");
fgets(octal_string, sizeof(octal_string), stdin);
// 去除换行符
octal_string[strcspn(octal_string, "\n")] = '\0';
for (i = strlen(octal_string) - 1; i >= 0; i--) {
if (octal_string[i] >= '0' && octal_string[i] <= '7') {
decimal += (octal_string[i] - '0') * base;
base *= 8;
} else {
printf("Invalid character in the input.\n");
return 1;
}
}
printf("Decimal representation: %d\n", decimal);
return 0;
}
```
这个方法逐位解析输入的字符串,根据8进制的基数计算每个字符对应的10进制值。