求高手解决解决思路

求高手解决
本帖最后由 Foxfile_Hom 于 2014-06-18 17:46:05 编辑
如下的代码片段

char* s = "hello";
char* MD5_Encrypt(const char* src)
{
char *dest;
struct MD5Context md5c;
unsigned char ss[16];
char res[33]={'\0'};
char tmp[3]={'\0'};
int i;

MD5Init( &md5c );
MD5Update( &md5c, src, strlen(src) );
MD5Final( ss, &md5c );

for( i=0; i<16; i++ ){
sprintf(tmp,"%02X", ss[i] );
strcat(res,tmp);
}
dest = res;
// printf("sign: %s\n",res);
// printf( "\t%s\n", src );
puts(dest);  //这里是ok的

return dest;
}
char* sign = MD5_Encrypt(s);
puts(sign);  //这里获取不到结果

求解得到sign的好办法

------解决方案--------------------
char res[33]={'\0'};
改成
static char res[33]={'\0'};
------解决方案--------------------
static char res[33]={'\0'};