Ciao!
Dato un file che contiene una serie di righe che contengono solo numeri interi separati da uno spazio, tipo nel formato:
"
210 630 22 102 435
240 500 35 923 234
0 611 152 883 238
14 57 64 613 846
96 635 856 535 22
"

e data una costante N definita a priori, vorrei estrapolare dal file una matrice quadrata di ordine N:
per esempio, con N = 4 e con quel file, la mia matrice deve essere
"
210 630 22 102
240 500 35 923
0 611 152 883
14 57 64 613


"
Ecco, sapendo per esempio che N = 4 e che il file contenga soltanto gli elementi utili per la mia matrice potrei benissimo farlo con un'istruzione del tipo

i=0;
while(fgets(riga, RIGA, fr) != NULL)

{

sscanf(riga, "%d %d %d %d", &matrice[i][0], &matrice[i][1], &matrice[i][2], &matrice[i][3]);

p = sscanf(riga, "%d %d %d %d", &matrice[i][0], &matrice[i][1], &matrice[i][2], &matrice[i][3]);


if(p != N)

{
printf("ERRORE - formato del file non corretto");

exit(4);

}

i++;


}


1° problema)

Ma così facendo, per esempio, se cambio il valore di N e metto N = 5 devo andare a modificare tutto il codice e aggiungere un altro "&matrice[i][4]", per cui questa istruzione è molto scomoda se voglio per esempio digitare il valore di N da tastiera (ammesso che voglio prendere tutte le righe dal file!)!

2° problema)

La funzione "sscanf" mi "scannerizza" l'intera riga del file e per ogni nuova riga parte dall'inizio ( ovvero sarebbe una sciocchezza scrivere
"
for(i=0; i<N; i++)
for(j=0; j<N; j++)
sscanf(riga[i][j], "%d", &matrice[i][j]);
"

, anche perché c'ho già provato e smette di funzionare tutto).

Allora, la mia domanda è:

dato un file formato da una serie di righe contenenti numeri interi ognuno separati da uno spazio, è possibile, man mano che si legge dal file un numero per volta, allocarli in una matrice quadrata di ordine N? o di ordine n (con n una costante acquisita da tastiera al momento dell'esecuzione)?