好吧,这个让我有点困惑。
以下函数将字符串编码为 base 64
void Base64Enc(const unsigned char *src, int srclen, unsigned char *dest)
{
static const unsigned char enc[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
unsigned char *cp;
int i;
cp = dest;
for(i = 0; i < srclen; i += 3)
{
*(cp++) = enc[((src[i + 0] >> 2))];
*(cp++) = enc[((src[i + 0] << 4) & 0x30)
| ((src[i + 1] >> 4) & 0x0f)];
*(cp++) = enc[((src[i + 1] << 2) & 0x3c)
| ((src[i + 2] >> 6) & 0x03)];
*(cp++) = enc[((src[i + 2] ) & 0x3f)];
}
*cp = '\0';
while (i-- > srclen)
*(--cp) = '=';
return;
}
现在,在调用 Base64Enc() 的函数上,我有:
unsigned char *B64Encoded;
这是我在 base 64 编码函数中传递给 unsigned char *dest 的参数。我尝试了从 mallocs 到 NULL 到其他初始化的不同初始化。无论我做什么,我总是会得到一个异常,如果我不初始化它,那么编译器(VS2005 C 编译器)会抛出一个警告,告诉我它没有被初始化。如果我使用未初始化的变量运行此代码,有时它会起作用,而其他一些则不起作用。如何初始化该指针并将其传递给函数?