首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

菜鸟问一个C语言有关问题

2012-02-13 
初学者问一个C语言问题把十六进制数字组成的字符串转化为与之等价的整型值#includestdio.h#defineYES1#d

初学者问一个C语言问题
把十六进制数字组成的字符串转化为与之等价的整型值
  #include   <stdio.h>
  #define   YES   1
  #define   NO   0
  int   htoi(char   *s)
  {
        int   hexdigit,i=0,inhex,n;
        if(s[i]== '0 ')
        {
                ++i;
                if(s[i]== 'x '||s[i]== 'X ')
                ++i;
        }
        n=0;
        inhex=YES;
        for(   ;inhex=YES;++i)
                {
                if(s[i]> = '0 '   &&   s[i] <= '9 ')
                hexdigit=s[i]- '0 ';
                else   if(s[i]> = 'a '&&s[i] <= 'f ')
                hexdigit=s[i]- 'a '+10;
                else   if(s[i]> = 'A '&&s[i] <= 'F ')
                hexdigit=s[i]- 'A '+10;
                else
                inhex=NO;
                if(inhex==YES)
                n=16*n+hexdigit;
                }
                return   n;
  }
  main()
  {
    char   *s= "oxc6f ";
    printf( "%d ",htoi(s));
  }
运行时说应用内存错误,请问各位大侠,这是什么问题

[解决办法]
第一个错 inhex=YES 应为 inhex == YES
第二个错 char *s= "oxc6f "; 正确的输入应为char *s= "0xc6f ";

初学都这样,写个几千行以后就好了:)
PS,把inhex ==YES 习惯性写为 YES==index就不会老犯这个错了

热点排行