Хорошо, этот меня немного озадачил.
следующая функция кодирует строку в базу 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;
Какой аргумент я передаю на unsigned char * dest в функции кодирования base 64.
Я пробовал разные инициализации от mallocs до NULL для другой инициализации. Независимо от того, что я делаю, я всегда получаю исключение, и если я его не инициализирую, то компилятор (компилятор C VS2005) выдает предупреждение о том, что оно не было инициализировано.
Если я запускаю этот код с неинициализированной переменной, иногда он работает, а некоторые другие - нет.
Как мне инициализировать этот указатель и передать его функции?