PDA

Visualizza la versione completa : [C] problema traserimento dati da file a lista


ANDREWZAFFA278
23-01-2013, 16:25
Testo dell'esercizio:
"Vi verrà fornito un file testuale (orario.txt) contenente un semplice orario ferroviario semplificato (non
ordinato) in questo formato (un treno per linea): numero del treno, spazio, ora di partenza, due punti,
minuto di partenza, spazio, destinazione. Esempio:
12342 12:15 Bergamo
21211 11:15 Pavia
Scrivere un programma che legga il file una riga per volta e memorizzi le informazioni relative ad ogni
treno in un elemento di una lista che rappresenterà il nostro orario. Il singolo elemento dovrà essere
una struttura contenente appunto numero del treno, ora di partenza, minuto di partenza e destinazione."

l'esercizio è in c; se uso la strtok come faccio però a memorizzare i vari campi della lista,nel senso prima di procedere con l'inserimento devo avere tutti e quattro i campi.
C'è qualcuno che mi può aiutare?? grazie

oregon
23-01-2013, 17:41
Leggi la riga all'interno di una array di char abbastanza grande.

Una volta che hai letto la riga, la tratti con la strtok

ANDREWZAFFA278
23-01-2013, 17:43
si ok fino a quel punto ci sono arrivato ma è dopo il problema!!

ANDREWZAFFA278
23-01-2013, 17:54
il problema è: nel momento in cui faccio la strtok per esempio leggendo dal file i dati del primo treno.
con un prima strtok trovo il numero del treno,con la seconda le ore etc.etc.. ma devo avere tutti i campi della lista prima di procedere con l'inserimento e quindi teoricamente dovrei tenere memoria delle parole già tokenizzate ma in che modo???? of course una volta che ho i 4 campi riparto da capo leggendo una nuova linea e tutto ricomincia

ANDREWZAFFA278
23-01-2013, 17:58
cioè la funzione che ho pensato è del tipo:
ma non so come memorizzare le varie parole


void trasferisci(list l1,FILE*fp){
char line[N];
char* pch;
while( fgets(line, N, fp) != NULL ){
pch=strtok (line," ");
while(pch!=NULL){
// salvataggio campi che poi finiranno in ogni nodo della lista
l1=ins_in_testa(l1,"campi_della_lista");
pch=strtok (NULL," ");
}
}
}

oregon
23-01-2013, 18:06
Devi usare una struttura con gli elementi di ogni singola riga e poi devi usare un array fatto da tanti elementi di questa struttura.

MItaly
24-01-2013, 02:35
Il linguaggio va specificato anche nel titolo, e il codice va incluso nei tag [co­de] ... [/co­de], altrimenti perde l'indentazione; ora ho sistemato io, in futuro ricordatene.
:ciauz:

Loading