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:
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;
}
}
Cosa c'è di sbagliato???