Хорошо, это меня немного озадачило.Указатель инициализации? для определенной функции
следующая функция кодирует строку в базу 64
void Base64Enc(const unsigned char *src, int srclen, unsigned char *dest)
{
static const unsigned char enc[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/";
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;
Какой аргумент я прохожу на неподписанные символ * Dest в функции кодирования базы 64. Я пробовал различные инициализации от mallocs до NULL до другой инициализации. Независимо от того, что я делаю, я всегда получаю исключение, и если я его не инициализирую, то компилятор (компилятор VS2005 C) выдает предупреждение о том, что он не был инициализирован. Если я запускаю этот код с неинициализированной переменной, иногда он работает, а другой - нет. Как инициализировать этот указатель и передать его функции?
Ваш первый пример (unsigned char * B64Encoded [256];) неверен - он должен быть: (unsigned char B64Encoded [256]) - Вы создаете массив из 256 char ptrs, а не 256 символов. – DaveR
Да, спасибо! исправлено его – Rom