D. 实验7-3-6 字符串转换成十进制整数

问题遇到的现象和发生背景 :答案错误 按书上敲的 自己加了个判断正负
#include<stdio.h>
#define MAXLINE 80
int main()
{
    int i,k,number=0,index=0,flag=1,j;
    char hexad[MAXLINE],str[MAXLINE];
    i=0;
    while((str[i]=getchar())!='#')
    {
        i++;
    }
    str[i]='\0';
    
    i=0;
    k=0;
    j=0;
    
    while(str[i]!='\0')//过滤废弃的 
    {
        if((str[i]>='0'&&str[i]<='9')||(str[i]>='A'&&str[i]<='F')||(str[i]>='a'&&str[i]<='f'))
        {
            hexad[k]=str[i];
            k++;
        }
        i++;
    }
    hexad[k]='\0';
    
    
    
    while(str[j]!='\0')//找第一个有效十六进制数字的下标 
    {
        if((str[j]>='0'&&str[j]<='9')||(str[j]>='A'&&str[j]<='F')||(str[j]>='a'&&str[j]<='f'))
        {
            index=j;
            break;
        }
        j++;
    }
    
    
    
    j=0;
    while(j<index)//找第一个数字前面有无负号 
    {
        if(str[j]=='-')
        {
            flag=-1;
            break;
        }
        j++;
    }
            
    
    
    
    
    
    
    
    for(i=0;hexad[i]!='\0';i++)//输出十进制有效数字 
    {
            if(hexad[i]>='0'&&hexad[i]<='9')
             {
                 number=number*16+hexad[i]-'0';
            }
            else if(hexad[i]>='A'&&hexad[i]<='F')
            {
                number=number*16+hexad[i]-'A'+10;
            }    
            else if(hexad[i]>='a'&&hexad[i]<='f')
            {
                number=number*16+hexad[i]-'a'+10;
            }        
            
    }
    printf("%d",number*flag);//乘个flag判断正负 
    return 0;
}

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果