十六进制字符转换为十六进制数值,程序不判断第二个字符是否为‘ x ’,就直接删掉头两个字符运行了
下面是我编的代码,本来是要先判断是否为“0x”开头,如果是,就删除这两个字符,不是的话就直接运行,可是运行结果不管是不是都删了头两个字符然后再运行了,大神求指导~~
#include <stdio.h>
#include <math.h>
#include <string.h>
int htoi(char ch[]);
int main()
{
char ch[100];
gets(ch);
printf("%x",htoi(ch));
getch();
return 0;
}
int htoi(char ch[])
{
int i,n,hex=0;
if (ch[1]='x')
{
for(i=2;i<10;i++)
{
ch[i-2]=ch[i];
}
}
else
{
for(i=0;i<10;i++)
{
ch[i]=ch[i];
}
}
n=strlen(ch);
for (i=0;i<n;i++)
{
if ((ch[i]>='0')&&(ch[i]<='9'))
{
hex+=(ch[i]-'0')*pow(16,n-i-1);
}
else
if ((ch[i]>='A')&&(ch[i]<='F'))
{
hex+=(ch[i]-'A'+10)*pow(16,n-i-1);
}
else
if ((ch[i]>='a')&&(ch[i]<='f'))
{
hex+=(ch[i]-'a'+10)*pow(16,n-i-1);
}
}
return hex;
}