Ho un problema strano, non riesco a far leggere una matrice quadrata da file ememorizzarla in un array bidimensionale allocato dinamicamente.
La matrice è memorizzata nel file in questo modo:
4
0 1 1 0
1 0 1 1
0 0 0 1
1 1 0 0
dove nella prima riga ho la dimensione e poi dalla seconda riga in poi ho la matrice. Il codice che uso per fare tuuto il lavoro è questo:
Cosa c'è di sbagliato???codice:int** mappa; int dim,i,j; char* filemap; FILE * sorgente; dim=0; printf("Digita il nome del file dove risiede la mappa da analizzare: "); scanf("%s",filemap); sorgente=fopen(filemap,"r"); /* apre il file sorgente */ if( sorgente==NULL ){ printf("Errore in apertura del file"); return 0; } rewind(sorgente); /* resetta l'offset del file */ fscanf(sorgente,"%d\n",&dim); /* legge la dimensione dalla prima riga del file */ if (dim==0){ printf("errore"); return 0; } /* Allocazione strutture dati */ mappa=(int**)calloc(dim,sizeof(int*)); /* alloca puntatori alle righe */ if (mappa==NULL){ printf("errore di allocazione"); return 0; } for(i=0;i<dim;i++) /* ciclo di allocazione */ { mappa[i]=(int*)calloc(dim,sizeof(int)); if (mappa[i]==NULL){ printf("errore di allocazione"); return 0; } } /* inizializzazione matrice di adiacenza */ for(i=0;i<dim;i++){ for(j=0;j<dim;j++){ fscanf(sorgente,"%d",&tmp); mappa[i][j]=tmp; } }

Rispondi quotando