注释如下,不知道有没有讲清楚:
#include <stdio.h>
int main(void){
//字符数组StrNum用于存储输入的8进制数字字符串,字符指针ptr用于遍历字符数组StrNum中的每一个字符
char StrNum[20],*ptr=StrNum;
unsigned int num=0; // 用于存储八进制字符串转为十进制是数后的结果
puts("请输入8进制数字字符串:"); //打印提示信息
gets(ptr); //从输入获取一个8进制数字字符串到字符数组StrNum中
while(*ptr){ //如果字符指针ptr当前指向的字符不为结尾的空字符'\0',则循环遍历字符数组下一个值
// *ptr-'0'用于将当前字符转为对应的数字, num*8用于将前面转换为八进制数字后的值提升其权值
// 因为ptr首先指向的是第一个字符,他对应的是八进制数最高位,然后第二次循环它的值被乘以8,
//这样不断循环可以计算出前面八进制数字其对应的十进制值
num=num*8+*ptr-'0';
ptr++; // 指向字符数组下一个字符
}
printf("%d\n",num); //打印结果
return 0;
}