Unrue
11-08-2005, 14:35
Salve ragazzi, ho un piccolo problema. ho salvato in un file una struttura cosi' fatta:
2 bytes per il codice ascii
2 bytes per il numero di bit della stringa
n bytes per il codice di tale simbolo
Ora, quando ripesco dal file tali campi, li ripongo in un'altra struttura in questo modo:
while(!feof(out))
{
fread(&codiceascii,sizeof(short int),1,out);
fread(&HuffmanCodes2[codiceascii].nbit,sizeof(short int),1,out);
HuffmanCodes2[codiceascii].code= new unsigned char[((HuffmanCodes2[codiceascii].nbit+8)>>3)];
fread(HuffmanCodes2[codiceascii].code,((HuffmanCodes2[codiceascii].nbit+8)>>3),1,out);}
Siccome nella struttura originaria vi sono solo 4 simboli, tale funzione dovrebbe ciclare quattro volte e poi uscire, ma purtropo, non so per qual emotivo, di cicli ne fa cinque per poi uscire, sovrascrivendomi l'ultimo carattere incontrato. Ma la funzione feof non termina quando arriva alla fine del file? Ha bisogno di un giro in più?
2 bytes per il codice ascii
2 bytes per il numero di bit della stringa
n bytes per il codice di tale simbolo
Ora, quando ripesco dal file tali campi, li ripongo in un'altra struttura in questo modo:
while(!feof(out))
{
fread(&codiceascii,sizeof(short int),1,out);
fread(&HuffmanCodes2[codiceascii].nbit,sizeof(short int),1,out);
HuffmanCodes2[codiceascii].code= new unsigned char[((HuffmanCodes2[codiceascii].nbit+8)>>3)];
fread(HuffmanCodes2[codiceascii].code,((HuffmanCodes2[codiceascii].nbit+8)>>3),1,out);}
Siccome nella struttura originaria vi sono solo 4 simboli, tale funzione dovrebbe ciclare quattro volte e poi uscire, ma purtropo, non so per qual emotivo, di cicli ne fa cinque per poi uscire, sovrascrivendomi l'ultimo carattere incontrato. Ma la funzione feof non termina quando arriva alla fine del file? Ha bisogno di un giro in più?