C语言题目。。输入一个以回车结束的字符串(少于80 个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。不知道哪里错了,求大神指点
#include<stdio.h>
int main()
{
int i,j=0,end=0;
char a[80],b[80];
printf("Input a string: ");
gets(a);
for(i=0;a[i]!='\0';i++)
{if((a[i]>='a'&&a[i]<='f')||(a[i]>='A'&&a[i]<='F')||(a[i]>='0'&&a[i]<='9'))
b[j]=a[i];
j++;}
b[j]='\0';
for(j=0;b[j]!='\0';j++)
{if (b[j]>='0'&&b[j]<='9')
end=end*16+b[j]-'0';
else if(b[j]>='A'&&b[j]<='F')
end=end*16+b[i]-'A'+10;
else
end=end*16+b[i]-'a'+10;}
printf("Hex=%d",end);
return 0;
}
è¾å ¥åå¨å°å符串ï¼ç¶åéä¸å¤æï¼å é¤ä¸åæ³çå符å³å¯ã
ä¸ãç®æ³åæï¼
1ãè¾å ¥å符串ã
2ãéä¸å¤ææ¯å¦åæ³ï¼å¦æä¸åæ³ï¼åå é¤ãå é¤æ¹æ³å¯ä»¥ä½¿ç¨åç»å符è¦çå½åå符ã
3ãå¯ä»¥ä»åååéåï¼æ¯ä¸ä¸ªä¸åæ³å符é½è¢«åç»åæ³å符è¦çï¼è¿æ ·ä¸æ¬¡å¾ªç¯å³å¯å®ææææä½ã
äºãåè代ç ï¼
#include <stdio.h>