初学者问一个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就不会老犯这个错了