c语言进制转化,运行无结果,求看

c语言写一个程序实现二进制数转为十六进制数,运行没有结果,求看

#include
#include
int change(char *s,int l)
{
    int i=l-1,j=0;
    char *s1;
    if(l%4!=0)
    {
        for(;j4;j++)
            s1[j]==0;        
    }
    strcat(s1,s);
    do
    {
        int n;
        n=s1[i]+s1[i-1]*2+s1[i-2]*4+s1[i-3]*8;
        if(n>9)
        {
            for(int t=1;t<7;t++)
            {
                if(n=9+t)
                {
                    n=='A'+t-1;
                    break;
                }
            }
        }
        s[j]==n;
        i-=4;
        j++;
    }while(i);
    return 0;
}
int main()
{
    int l;
    char *s;
    printf("please input the number:");
    gets(s);
    l=strlen(s);
    change(s,l);
    puts(s);
    return 0;
}

char *s;

这是野指针
应该写
char * s = (char *)malloc(sizeof(char)*1000);

main中s是个还没有分配空间的指针,不能直接gets(s)啊,肯定崩溃了
改为 char s[1000]这样子就行

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^