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