Ciao a tutti!
Ho un problema e non riesco a capire il motivo.. quando lo eseguo mi entra in loop, e non esce mai perchè non entra mai in questa condizione:
premetto che alla funzione decomprimi passo un file di n caratteri composto da una successione di numeri (se il numero è 0 lo associo a 256), alternata a caratteri..codice:else { fineDecompressione=1; //ho raggiunto la fine del file e ponendo fineDecompressione a 1 esco dal while }
Prima del while (fineDecompressione==0) ovviamente apro il file *nomeDelFile in modalità lettura binaria e un altro file in modalità scrittura..
Il problema dovrebbe consistere nel fatto che non trova l'EOF e quindi fineDecompressione non diviene mai uguale a 1 e non esce dal while, entrando così in loop!
LUNGHEZZA_BUFFER_LETTURA è 1000
Riuscite ad aiutarmi? grazie mille per la disponibilità!
codice:void decomprimi(unsigned char *nomeDelFile) { ... while(fineDecompressione==0) { //fino alla fine del file numeroByte=fread(bufferLettura,1,LUNGHEZZA_BUFFER_LETTURA,fileBinario); // printf("\n numeroByte:%d \n",numeroByte); rewind(fileBinario); if(!feof(fileBinario)) //se non è la fine del file (End Of File) { while(k<numeroByte) { numero=bufferLettura[k]; lettera=bufferLettura[k+1]; printf("\n Numero: %d \n",numero); printf("\n Lettera: %c \n",lettera); if(numero==0) { numero=256; } if(lettera==64) { lettera=' '; } bufferScrittura=(unsigned char*)malloc((numero+1)*sizeof(char)); //allocazione della memoria per bufferScrittura for(j=0;j<numero;j++) { bufferScrittura[j]=lettera; } bufferScrittura[j]='\0'; //metto il \0 per andare a scrivere sul file printf("\n BufferScrittura: %s \n",bufferScrittura); fileScritto=fwrite(bufferScrittura,1,(numero+1),fileTesto); //scrivo sul file free(bufferScrittura); numero=0; lettera='\0'; k+=2; } } else { fineDecompressione=1; //ho raggiunto la fine del file e ponendo fineDecompressione a 1 esco dal while } } printf("\nFine della decompressione!\n"); fflush(stdout); //chiusura dei file aperti fclose(fileBinario); fclose(fileTesto); }

Rispondi quotando