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

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

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值