ciao a tutti,
sto scrivendo un programma che scrive e legge dati compressi su file.. e ho un problema..
praticamente funziona cosi: prendo un file in input d caratteri e li scrivo con fprintf()compressi (cn RLE, cioe carattere-numero di ripetizioni del carattere) in formato:
- short int per il carattere
- unsigned short int per il numero di occorrenze
il tutto su un altro file che poi devo leggere per decomprimerlo e riscriverlo in modo che ritorni uguale all'originale..
il file compresso riesco a scriverlo senza problemi ma quando vado a leggerlo con fscanf per decomprimerlo debuggando noto dei problemi..
il file compresso lo scrivo cosi:
short int BUFFER[BUF_SIZE];
...
for(j = 0; j < BUF_SIZE; j++)
fprintf(fp, "%hd", BUFFER[j]);
mentre in fase di lettura uso:
short int carattere;
unsigned short int count;
...
fscanf(fp, "%hd", &carattere);
per i caratteri e
fscanf(fp, "%hu", &count);
per le rispettive occorrenze.
Facendo debug ho scoperto che i caratteri vengono letti bene (cioe legge il valore intero ASCII corretto) mentre per le occorrenze la scanf memorizza nella variabile count il valore 65535 per valori da leggere molto grandi cioe superiori a 30 000..
il problema secondo voi sta nella formattazione della fscanf? cioe in quel %hu? come posso risolverlo?
oppure sapreste propormi soluzioni alternative per risolvere il problema?
scusate il casino..
grazie
Ciao!