在输入str1 时只输入十六进制数 最后转变的十进制数就是对的
但是一旦多打一个其他字符 最后十进制数就会出错
但是puts(str2) 打出的字符就是我想要的
想问问是哪儿出错了

#include<stdio.h>
#include<string.h>
#define N 81
#define M 81
int main()
{printf("Enter a string:");
char str1[N]={0};
char str2[M]={0};
gets(str1);
printf("New string:");
for(int k=0,j=0;k<strlen(str1);k++)
{
if(str1[k]>='0'&&str1[k]<='9')
{str2[j]=str1[k];j++;}
if(str1[k]>='a'&&str1[k]<='f')
{str2[j]=str1[k];j++;}
if(str1[k]>='A'&&str1[k]<='F')
{str2[j]=str1[k];j++;}}
puts(str2);
int i=0,t=0,number=0;
for(i=0;str2[i];i++)
{
if(str2[i]>='0'&&str2[i]<='9')
t=str1[i]-'0';
else if(str1[i]>='a'&&str2[i]<='f')
t=str2[i]-'a'+10;
else if(str1[i]>='A'&&str2[i]<='F')
t=str2[i]-'A'+10;
number=number*16+t;}
printf("number=%d",number);
return 0;
}
```