PDA

Visualizza la versione completa : C/C++: scrivere all'inizio di un file binario senza sovrascrivere il contenuto


Dave83
11-10-2002, 17:45
Qualcuno sa come si fa? con le funzioni normali se m sposto all'inizio del file e inserisco qualsiasi carattere m viene sostituito ai dati ke stavano al suo posto, ma a me serve aggiungerlo: vorrei evitare di copiare tutto un file (visto ke poi si tratta di file d almeno 2MB) x accodarlo al testo ke voglio inserire.

Johnny_Depp
11-10-2002, 18:43
in C

FILE *fout;
fout=fopen("text.txt", "w+");
fputs(stringa, fout);

Dave83
12-10-2002, 14:51
Originariamente inviato da Johnny_Depp
in C

FILE *fout;
fout=fopen("text.txt", "w+");
fputs(stringa, fout);

No nn va bene cos (xk viene eliminato il contenuto del file).
Anche aprendolo in append e scrivendo dentro al file si va a sovrascrivere i dati ke c'erano precedentemente nel file

A me serve scrivere all'inizio del file senza x sovrascrivere i dati(devo aggiungere all'inizio del file, tutto qua)

es:
file prima della scrittura:

testo
di
prova


file dopo la scrittura: (inserisco la parola "ciao")

ciao
testo
di
prova

Johnny_Depp
12-10-2002, 17:38
...L'unico modo che AL MOMENTO mi viene in mente

quello di inserire il contenuto del FILE.txt
in un array

poi sovrascrivi il file di testo
inserendo prima la stringa (o nuovo record) appena inserita in input
e poi l'intero contenuto dell'array,

se esiste una funzione specifica del C fateci sapere :gren:

Dave83
12-10-2002, 18:37
E' la stessa cosa ke ho pensato io, ke volendo potrei ottimizzare salvando in memoria centrale un tot di dati ke sono quanti quelli ke devo scrivere, prima di sovrascriverli, visto ke lavoro con degli mp3 ke sono file di diversi MB.

ad es:
ho un file di 1000byte e devo scrivere 100byte all inizio del file

al posto di salvare subito 1000byte ne salvo solo 100 (i primi 100) x poi sovrascriverli con quelli ke devo inserire io, poi copio i byte da 101 a 200 in un altra zona d memoria e sovrascrivo i 100byte salvati precendentemente, cos via fin quando nn arrivo alla fine.

brainforce
13-10-2002, 02:06
ofstream NomeTuoFile("nomefile.txt",ios::app); con questo continui a scriverci da dove lo hai lasciato

ofstream NomeTuoFile("nomefile.txt",ios::beg); con questo cominci a scriverci dall'inizio

Spero che questo ti possa essere d'aiuto. :metallica

Dave83
13-10-2002, 14:59
ma questo lo so gi!
il problema ke io devo scrivere all'INIZIO del file SENZA sovrascrivere i dati in esso contenuti

ofstream NomeTuoFile("nomefile.txt",ios::beg); con questo inizio si a scrivere all'inizio del file, ma perdo i dati ke c'erano dove vado a scrivere

Iocci
14-10-2002, 20:31
non penso proprio che si possa fare una cosa come dici tu senza copiare il file in un vettore, aggiungere il testo all'inizio e poi rimetterlo su file.

Loading