manvb.net (Member)
Guru
Messaggi: 663
Iscritto: 28/01/2008
|
Te lo scrivo in pseudocodice:
Ponendo di avere due variabili (numstruct e numcampo) che indicano il numero della struttura e del campo da leggere:
Codice sorgente - presumibilmente C# |
char buffer[100]; int x=0; while (!feof(file)){ //Finchè il file non è finito if(x==(numstruct*5)+numcampo){//Se ho raggiunto il punto dsiderato inserisci il nuovo dato buffer=valore_aggiornato; //ricordati di metterci un accapo alla fine fprintf(file2, "%s", buffer); } else { fgets(buffer, 99, file); //Altrimenti limitati a copiare la riga fprintf(file2, "%s", buffer); } x++; } copia(file, file2); //Copia file2 in file(questa funzione non esiste è solo pseudocodice)
|
file è il file di origine e file2 è il file di destinazione
Ultima modifica effettuata da manvb.net il 09/06/2009 alle 17:46 |
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da manvb.net:
Dovresti arrivare alla linea desiderata con fgets(considerando che ogni struttura occupa 5 linee). Nel frattempo copi tutte le linee che leggi su un file temporaneo. Arrivato alla linea desiderata invece di copiarla ne inserisci una nuova e poi continui a copiare il file riga per riga. Finito di far ciò copi il file temporaneo al posto di quello originale.
Dammi retta ti conviene riscriverlo da capo. |
Uhmm... non sono del tutto d'accordo, puo' convenire riscrivere tutto se il file e' piccolo, ma se si memorizza un intero campionato... , se poi le operazioni di modifica sono molto frequenti...
in tal caso usare le funzioni fseek e company potrebbe essere conveniente.
Ciao.
Luigi |
|
Lawliet (Normal User)
Expert
Messaggi: 386
Iscritto: 09/04/2009
|
O_O' usare 1 file temporaneo per copiare e incollare? Così ci metti tanto tempo... meglio come dice luigi
|
|