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;
}