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++ - Output di Liste su File
Forum - C/C++ - Output di Liste su File

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 18:29
Domenica, 15/05/2011
Salve a tutti ragazzi!
Vorrei sapere come è possibile salvare una lista lineare su file. Mi spiego meglio, sto creando un programmino tiporubrica tramite liste. Inserimento contatti in ordine alfabetico, ricerca contatti, eliminazione contatti ecc... Il problema è che quando faccio l'output su file, l'ordine alfabetico "scompare" e inserisce tutto in coda. Come se non mi considerasse l'ordinamento (che su schermo funziona perfettamente). Ad esempio se inserisco giuseppe e poi antonio, su schermo ovviamente mi inserisce in lista prima antonio e poi giuseppe...su file prima giuseppe e poi antonio. cOme posso fare?

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 19:10
Domenica, 15/05/2011
Se la lista è ordinata non dovrebbero esserci prob.. implementando una funzione del tipo

.....apro il file in modalita scrittura......
while(node != NULL){
  fprintf(puntatore a file, format string, node->variabili ecc...);
  node = node->next;
}
..........chiudo il file......
cmq se ti può aiutare:
http://www.pierotofy.it/pages/sorgenti/dettagli/18720-Gest ...

Ultima modifica effettuata da Bonny il 15/05/2011 alle 19:13
PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 22:47
Domenica, 15/05/2011
Si ma infatti la lista è già ordinata, xchè appena inserisco un nuovo nome me la ordina automaticamente in ordine alfabetico. Mi spiego meglio:
Situazione iniziale: lista vuota.
Inserisco un nominativo: ok, lo inserisco in lista e faccio l'output su file
Inserisco un altro nominativo, ok, lo inserisco in lista e mi faccio stampare a schermo in modo da assicurarmi che sia disposto in ordine alfabetico. Ed è così. Però su file, non me lo stampa in ordine alfabetico, ma lo accoda al precedente.

Esempio, se inserisco Giuseppe e Antonio, a schermo compare la lista ordinata, Antonio e poi Giuseppe. Ma su file Giuseppe e poi Antonio!

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 11:35
Lunedì, 16/05/2011
è ovvio che sia cosi perchè fai un append sul file ...
si ma che te frega dei come i dati vengono scritti sul file, per esempio sulla funzione "visualizza rubrica" che farai sicuramente.. quando vai a leggere i "record" dal file crei una lista ordinata e all'utente fai visualizzare la lista corrente!!!
Poi se ti interessa salvare i dati ordinati anche nel file io farei cosi:
-apro il file in modalità lettura (r)
-creo la lista (ordinanta)
-chiudo il file
-aggiungo il nuovo nodo alla lista, ovviamente rispettando il protocollo di ordinamento
-apro il file in modalità scrittura (w)
-scrivo gli elementi della lista (nb il file viene sovrascritto)
-chiudo il file

secondo me questa è una scorciatoia per non usare le varie funzioni della libreria stdio.h; per esempio fseek() ecc..
però è poco sicura e poco professionale perchè se al momento della scrittura (punto 6) viene a mancare l'alimentazione alla macchina perdiamo tutto:)

PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 15:12
Lunedì, 16/05/2011
eh si avevo pensato pure io di fare così. Adesso provo. Comunque potrei anche inserire tutta la rubrica, effettuare tutte le operazioni possibili e poi al momento della chiusura del programma far fare l'output su file in modo da salvare tutto

PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 20:49
Giovedì, 19/05/2011
Testo quotato

Postato originariamente da Bonny:

è ovvio che sia cosi perchè fai un append sul file ...
si ma che te frega dei come i dati vengono scritti sul file, per esempio sulla funzione "visualizza rubrica" che farai sicuramente.. quando vai a leggere i "record" dal file crei una lista ordinata e all'utente fai visualizzare la lista corrente!!!
Poi se ti interessa salvare i dati ordinati anche nel file io farei cosi:
-apro il file in modalità lettura (r)
-creo la lista (ordinanta)
-chiudo il file
-aggiungo il nuovo nodo alla lista, ovviamente rispettando il protocollo di ordinamento
-apro il file in modalità scrittura (w)
-scrivo gli elementi della lista (nb il file viene sovrascritto)
-chiudo il file

secondo me questa è una scorciatoia per non usare le varie funzioni della libreria stdio.h; per esempio fseek() ecc..
però è poco sicura e poco professionale perchè se al momento della scrittura (punto 6) viene a mancare l'alimentazione alla macchina perdiamo tutto:)
  




Niente, nn funziona...è complicato sto fatto. Devo rifletterci meglio. Qualcuno ha altre idee?

PM Quote
Avatar
ElCobra91 (Normal User)
Newbie


Messaggi: 18
Iscritto: 22/08/2010

Segnala al moderatore
Postato alle 14:37
Sabato, 21/05/2011
Puoi postare il codice?

PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 22:28
Sabato, 21/05/2011
No ma non è un problema di codice. A scrivere me lo scrive bene. Adesso ho bisogno di un'idea di come far leggere tutto. Xchè quando scrivo una struttura su file i puntatori, dopo la lettura, non hanno lo stesso valore.

PM Quote
Avatar
Peppe91 (Member)
Rookie


Messaggi: 41
Iscritto: 09/04/2011

Segnala al moderatore
Postato alle 22:29
Sabato, 21/05/2011
No ma non è un problema di codice. A scrivere me lo scrive bene. Adesso ho bisogno di un'idea di come far leggere tutto. Xchè quando scrivo una struttura su file i puntatori, dopo la lettura, non hanno lo stesso valore.

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo