八进制数字字符转化为十进制详解

#include 
#include 
#include 
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';
*/

你可能感兴趣的:(C语言,c语言,算法,c++)