PDA

Visualizza la versione completa : [C] Acquisizione di un grafo


Frank88
03-11-2011, 14:55
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.


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

Frank88
03-11-2011, 14:57
Per esattezza quello che ottengo dal run sono due valori prefissati che si ripetono in tutta la stesura del mio grafo sino alla fine,questo problema invece non lo ho sulla lettura dell'id stradale che viene eseguita correttamente.

Loading