Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Cancellare record da un file binario
Forum - C/C++ - Cancellare record da un file binario

Avatar
Hunter-combo (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/02/2014

Segnala al moderatore
Postato alle 16:34
Domenica, 02/03/2014
Il mio problema è cancellare un record memorizzato su un file binario.
Mi sapreste suggerire come completare la funzione Cancella, nel seguente programma :

http://pastebin.com/tHNX85cV


(ho abbozzato qualche riga di codice spero possa andar bene)

Inizio a scorrere il file,leggendo ogni blocco con la funzione fread,appena trovo il record cercato,come dovrei cancellarlo ??  
Non riesco a capire bene la logica.

Grazie mille.

Ultima modifica effettuata da Hunter-combo il 02/03/2014 alle 16:37
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 18:57
Domenica, 02/03/2014
Ciao!
Per cancellare un record, utilizza un file temporaneo, in cui ricopi tutti i record, tranne quello da cancellare.
Quindi cancella il file vecchio e rinomina la copia.

PM Quote
Avatar
Hunter-combo (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/02/2014

Segnala al moderatore
Postato alle 19:15
Domenica, 02/03/2014
Ciao, grazie per aver risposto.
Dici utilizzando le funzioni remove() e rename() ?!
Volevo proprio evitare di usare quelle funzioni.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:35
Domenica, 02/03/2014
Quello è un modo, il modo più semplice.

Oppure potresti spostare i record attivi in alto e troncare il file con una funzione apposita (che dipende dal sistema operativo usato). Se l'ordine dei record non è importante potresti anche velocizzare questa operazione.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Hunter-combo (Normal User)
Newbie


Messaggi: 9
Iscritto: 28/02/2014

Segnala al moderatore
Postato alle 22:36
Lunedì, 03/03/2014
Grazie, alla fine ho optato per il "modo più semplice" utilizzando rename e remove . ;)

PM Quote