C中如何将字符串0777转化为八进制数777
时间: 2024-10-12 08:14:23 浏览: 16
在C语言中,你可以通过手动分割字符串并逐位转换的方式来将类似"0777"的字符串转化为八进制数。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
int octalToDecimal(const char *str) {
int num = 0;
int power = 0;
for (int i = strlen(str) - 1; i >= 0; i--) {
if (str[i] != '0') { // 验证字符是否为八进制数字
printf("Invalid string: Non-zero digit found at position %d\n", i);
return - '0') * pow(8, power++);
}
return num;
}
int main() {
const char* str = "0777";
int decimalNum = octalToDecimal(str);
if (decimalNum == -1) {
return -1;
} else {
printf("The octal number 0777 is equivalent to decimal %d.\n", decimalNum);
return 0;
}
}
```
这个程序首先检查字符串中的每个字符是否都是'0'。如果是,它会计算对应的八进制数值并累加到总结果上。最后返回得到的十进制数777。如果不是'0',则认为字符串无效并返回错误。
阅读全文