PDA

View Full Version : Cancellare una struttura da un file binario in C


R1((ky
01-05-2002, 10:58
Nelle dispense del mio prof non ho trovato nulla a riguardo, nè nel mio manuale di C.....so che ci sarebbe l'alternativa di porre la struttura uguale a zero...ma preferirei cancellarla...come si fa....?

thanks ;)

cionci
01-05-2002, 17:54
Se i tuoi record stanno tutti in memoria riscrivi il file da zero e salti il record che vuoi cancellare...
Se stanno su un disco devi crearti un nuovo file saltando il record che vuoi cancellare...e alla fine canclellare il file originale e rinominare il file nuovo con il nome del file vecchio...

Se i record sono a lunghezza fissa allora puoi sovrascrivere il record che vuoi sovrascrivere con il record sccessivo e così via...
L'ultimo record ti avanza e lo devi invalidare in qualche modo...

homero
02-05-2002, 04:42
intendi dire cancellare un record su disco?
cosa indenti per struttura?

R1((ky
02-05-2002, 14:30
Originariamente inviato da homero
[B]intendi dire cancellare un record su disco?
cosa indenti per struttura?


intendo questa:


typedef struct
{
int campo1;
char campo2;
double campo3;
}struttura;

memorizzata in un file binario................

Pot
02-05-2002, 19:54
scrivi il file binario in un altro file e poi lo rinomini! oppure lo apri in wb+ e poi sovrascrivi tutte le strutture saltando quella che vuoi cancellare e da li in poi le riscrivi una posizioni + in dietro! comunque io farei la prima! + comoda e semplice! l'unica cosa ricordati che ,se la copi con un ciclo for e apri i 2 files in ab+ , di leggere tute le volte il files altrimenti lo riscrivi non vai avanti esempio:
fp=fopen("pippa.dat",ab+");
fp2=fopen(pippanew.dat",ab+");
for(i=0;i<numerostrutture;i++)
{
a=fread(......sizeof etc........);
if((a!=NULL)
}

e poi rinomini il files che non mi ricordo + come si faccia!

non ti assicuro che sia giusto perchè una domanda cazzçça del genere mi è costata il 30 e forse anche la lode all'esame di Fondamenti B

Ciao Alessio