Ti ho postato il codice che implementa il metodo completo descritto nel mio post precedente. L'unico accorgimento e` che la tua funzione leggiFile deve restituire anche la dimensione del vettore, ovvero il numero di elementi letti dal file.
typedef struct matrice{
int elemento;
int riga;
int colonna;
};
typedef matrice vett[N];
typedef matrice s[N];
int main(){
int i, j;
int num_elementi;
int n_righe = 0, n_colonne = 0;
int ** M;
matrice V;
num_elementi = leggiDati(V, "file"); /* legge i dati dal file */
/*NB!!!!!!! leggiDati deve ritornare anche il numero di elementi letti e inseriti in V!!!!!!!!!!!!!!!!!!!!!!!*/
/* si calcola la dimensione della matrice */
for (i = 0; i < num_elementi; i++){
if (V[i].riga > n_righe)
n_righe = V[i].riga;
if (V[i].colonna > n_colonne)
n_colonne = V[i].colonna;
}
/* alloca la matrice in memoria */
M = (int **) malloc(sizeof(int *) * n_righe);
for (i = 0; i < n_righe; i++)
M[i] = (int *) malloc(sizeof(int) * n_colonne);
/* azzera la matrice */
for (i = 0; i < n_righe; i++)
for (j = 0; j < n_colonne; j++)
M[i][j] = 0;
/* inserisce gli elementi di V in M */
for (i = 0; i < num_elementi; i++)
M[V[i].riga][V[i].colonna] = V[i].elemento;
/* stampa M */
for (i = 0; i < n_righe; i++)
for (j = 0; j < n_colonne; j++)
printf("Matrice[%d][%d] = %d\n", i, j, M[i][j]);
}