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:
codice:
else
{
fineDecompressione=1; //ho raggiunto la fine del file e ponendo fineDecompressione a 1 esco dal while
}
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..
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);
}