J'ai récupéré cette méthode pour encoder un fichier en base64 mais
elle plante au niveau du 1er fprintf. Quelqu'un a t-il une solution???
Merci
#define b(a) (((a)>=0 && (a)<=25)?((a)+'A'):(((a)>=26
&& (a)<=51)?((a)-26+'a'):(((a)>=52 &&
(a)<=61)?((a)-52+'0'):(((a)==62)?('+'):(((a)==63)?('/'):('='))))))
FILE* EncodageB64(char* fichier)
{
FILE *f, *g = tmpfile();
unsigned char buff[3];
int i=0;
//en binaire, car ceci enlève l'erreur du fread (\n -> \r)
f = fopen(fichier,"rb");
if(f == NULL)return NULL;
cout<<"ici";
buff[0] = buff[1] = buff[2] = 0;
while ( ( i = fread(buff,1,3,f) ) > 0 ) {
fprintf(g,"%c",b(buff[0]>>2) );
cout<<"la";
fprintf(g,"%c",b(((buff[0] & 0x3) << 4) | buff[1] >> 4 ) );
cout<<"la2";
if ( i > 1 ) {
fprintf(g,"%c",b(((buff[1] & 0xF) << 2) | buff[2] >> 6 ) );
if ( i > 2 ) {
fprintf(g,"%c",b(buff[2] & 0x3F ) );
} else
fprintf(g,"=");
} else
fprintf(g,"==");
buff[0] = buff[1] = buff[2] = 0;
}
fclose(f);
return g;
}