求帮忙看一下这个这段小程序:变量定义的位置不一样为什么会错误?
//转换16进制为字符串
void hex2str(char* str,int length,char* ret)
{
char *endptr;
char ch16[2] ;
char ch;
int i,j=0;
char re[length] ;
long lnumber;
memset(re,'\0',sizeof(re));
for (i=0;i<strlen(str);i+=2){
ch16[0] = *(str+i);
ch16[1]=*(str+i+1);
ch16[2]='\0';
lnumber = strtol(ch16, &endptr, 16);
ch = (int)lnumber;
re[j++] = ch;
}
re[j]='\0';
strcpy(ret , re);
}
int main(void)
{ char *str ;
char* pp; //这里奇怪,这样执行会错误
char* re;
//要是pp定义在*re后面则正常
strcpy(str,"d6dccea7");
hex2str(str,strlen(str),re);
return 0;
}
估计是hex2str函数有错误。。
请帮忙看一看。