Lettura/Scrittura File binari

di il
1 risposte

Lettura/Scrittura File binari

Ciao ragazzi , vi scrivo per chiedervi aiuto.
Ho la necessità di realizzare una funzione che sia in grado di inserire ciclicamente all'interno di un file binario la seguente struttura:
struct Record{
char str[30];
int n;
}
str è una sequenza di 30 caratteri che possono essere solamente 0,1,2 , n ovviamente un intero che tiene traccia del numero di volte che ho tentato di inserire una sequenza simile.
Ho deciso di utilizzare il file con accesso causale così da poter avere un accesso diretto ad ogni struttura inserita.

Ogni volta che devo inserire una struttura genero una chiave valutando in base 3 str ed arrotondando al primo multiplo di 36 prossimo alla chiave generata ( 36 in quanto sizeof(struct ...) è proprio 36).
Mi posiziono con fseek(fp,key,SEEK_SET) ,leggo con fread(recordtest, sizeof(struct), 1, fp) se in quella posizione c'è già un campo con la stessa chiave,
se sì aggiorno n(contatore) altrimenti mi riposiziono con fseek e scrivo con fwrite(record,sizeof(struct),1,fp) in quella posizione.

Purtroppo non funziona, non riesco a capire se sia perchè le chiavi generate siano numeri troppo grandi, considerato che il numero massimo è 3^30 -1 oppure faccio caos nel posizionarmi all'interno del file.

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte