Salve a tutti, stavo facendo una funzione C che permette la codifica e la decodifica di un file di testo, ma non riesco a capire il motivo per cui non riesco ad ottenere il risultato voluto . Uso l'operatore XOR perché in tal modo riesco a recuperare il valore originario al momento della decrittografia .
Inoltre in questo punto riporta un warning che non so come risolvere...
spero che qualcuno mi possa dare una mano.
Di seguito il codice:
codice:
void crypt(char* filename_origin, char* filename_destination, int seed) { //DA VEDERE BENE
FILE* fpr, *fpw;
int i, num;
int rnd; ////////
char* buffer[BUFFERSIZE];
srand(seed);
if((fpr = fopen(filename_origin, "rb")) == NULL){
fprintf(stderr,"Cannot open origin file\n");
exit(1);
}
if ((fpw = fopen(filename_destination, "wb")) == NULL) {
fprintf(stderr,"Cannot open destination file\n");
exit(1);
}
while ((num = fread(buffer, 1, BUFFERSIZE, fpr)) != 0) {
for(i=0; i < num; i++){
rnd = rand();
// buffer[i] ^= rnd; //Invalid operands to binary ^
buffer[i] = (char)((int) buffer[i] ^ rnd); //WARNING: ASSIGNMENT MAKES POINTER FROM INTEGER WITHOUT A CAST
scanf("%c : %d\n",buffer[i], rnd);
}
fwrite(buffer, 1, num, fpw);
}
// fwrite(buffer, 1, num, fpw);
fclose(fpr);
fclose(fpw);
}