qq_56365009
木木哈慕
2021-06-21 19:37
采纳率: 100%
浏览 10

我想问一下星p-'0'是什么意思呢?还有他的k为什么是这样算的呢?

#include<stdio.h>
int convert(char *p)
 {/****/
    int k;
    k=*p-'0';
    while(*++p)
    {
        k=k*8+*p-'0';
    }
    return k;
  /****/}
main()
{
    char s[6];void NONO();
    int a;
    printf("请输入一个8进制数字的字符串: ");
    gets(s);
    
    a=convert(s);
    printf("%d\n",a);
    NONO();
}

void NONO()
{
  FILE *rf, *wf; int a=0;
    char s[6];
    rf=fopen("d:\\programC\\3\\in.dat","r");
    wf=fopen("d:\\programC\\3\\out.dat","w");
    for(int i=0;i<5;i++)
    {
      
      fscanf(rf,"%s",s);
      a=convert(s);
      fprintf(wf,"%d\n",a);
    
    }
    fclose(rf);
    fclose(wf);
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq_40385747
    水星程序店 2021-06-21 19:44
    已采纳

    一个字符类型的数,比如 '2',它减去 '0' 之后,就变成整数类型的  2,就可以进行计算了,与强制类型转换效果相同。

    点赞 1 评论
  • weixin_41330524
    暖晴的天 2021-06-21 19:40

    *p 是一个 char 类型的指针,*p - '0'   为   *p 内存储存的字符值减去 '0' 字符的值。 k 这里是输出 *p - '0' 后的 ascii 码。

    点赞 1 评论

相关推荐