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]这样子就行