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);
    
}