D'accord, celui-ci m'a un peu énervé un peu.Initialisation de pointeur? pour une fonction spécifique
la fonction suivante encode une chaîne dans la base 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;
}
Maintenant, la fonction d'appel Base64Enc() Je:
unsigned char *B64Encoded;
Quel est l'argument que je passe sur unsigned char * dest dans la fonction de codage de base 64. J'ai essayé différentes initialisations de mallocs à NULL à d'autres initialisations. Quoi que je fasse, je reçois toujours une exception et si je ne l'initialise pas, alors le compilateur (compilateur C VS2005) lance un avertissement m'indiquant qu'il n'a pas été initialisé. Si j'exécute ce code avec la variable non-initialisée, parfois ça marche et pas d'autre. Comment initialiser ce pointeur et le passer à la fonction?
Votre premier exemple (unsigned char * B64Encoded [256];) est faux - il doit être: (unsigned char B64Encoded [256]) - Vous créez un tableau de 256 char ptrs, pas 256 chars. – DaveR
oui, merci! corrigé – Rom