#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int fun( char *p )
{ int n;
n=*p-'0';
p++; ///还有就是要注意指针值的变化
while( *p!=0 ) {
n=n*8+*p-'0';
p++;
}
return n;
}
main()
{ char s[6]; int i; int n;
printf("Enter a string (Ocatal digits): "); gets(s);
if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }
for(i=0; s[i]; i++)
if(s[i]<'0'||s[i]>'7')
{ printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }
printf("The original string: "); puts(s);
n=fun(s);
printf("\n%s is convered to integer number: %d\n\n",s,n);
}
/*解释一下:
下面主函数可以看懂:
就是上面的转化函数不太明白:
1.首先理解一下八进制转化为十进制,是数字形式的转化,但是在计算机中数字字符都是按照acsii
的形式存储的,所以说首先要将数字字符的ascii码转化为数字,代码就是 n=*p-'0';
2.转化成数字成功之后就是将指针的地址指向下一个数组的值的地址 p++;
然后就是去判断,将输入发的几个数字字符都转化为十进制数字之后,再整体结合成一个完整的十进制数
要清楚的两点是:1.数字字符(ascii)转化为数字 n=*p-'0';
2.其他进制转化为为十进制的算法 n=n*8+*p-'0';
*/
八进制数字字符转化为十进制详解
最新推荐文章于 2022-11-28 20:25:09 发布