Salve a tutti,
Ho necessità di estrarre dati da un file ed inserirli in un grafo.
Il file ha il seguente formato: Torino Vercelli 2 A4 80 3 SS23 95 0
2--->numero collegamenti
A4---->ID strada
80---->Km
3---->pedaggio
e la stessa struttura si ripete per SS23.
Di seguito è riportato il frammento di codice.Qualcuno saprebbe spiegarmi perchè il programma non riesce a leggere i valori interi corrispondenti a lunghezza del tratto stradale e valore del pedaggio?
In caso affermativo quale correzioni devo apportare?
In attesa di risposte,
Grazie a tutti.
codice:GRAPH read_graph(char* filename){ FILE* fp=NULL; char buff[MAX_LINE]; int n_colleg; char localita1[MAX_LINE]; char localita2[MAX_LINE]; char id[MAX_LINE]; int lung; int pedaggio; int m, n=0; GRAPH g=NULL; NODO current_node=NULL; if((fp=fopen(filename,"r"))==NULL) printf("Errore in apertura del file.\n"); g=(GRAPH) calloc (1, sizeof(Graph)); g->graph_name = (char*)calloc((strlen(filename)+1),sizeof(char)); strcpy(g->graph_name, filename); while(fgets(buff,MAX_LINE,fp)!=NULL){ m=0; sscanf(buff,"%s %s %d %n",localita1,localita2,&n_colleg,&n); current_node = search_node(g, localita1); if (current_node == NULL) current_node = insert_node(g, localita1); current_node->visited = NON_VISITATO; current_node = search_node(g, localita2); current_node = insert_node(g, localita2); current_node->visited = NON_VISITATO; for(m+=(n);sscanf(buff+m,"%s %d %d %n",id,&lung,&pedaggio,&n)==3;m+=(n)){ insert_edge(g,current_node, localita2,id,&lung,&pedaggio); } } return g; }

Rispondi quotando