To'; il tuo codice tra l'altro ha un errore per cui in matrice vengono memorizzati i dati in un'unica riga. Lo correggo.
codice:
#define N 2
#define M 255
int matrice [N][M];
File* infile;
int i = 0;
int j = 0;
int dummy;
infile = fopen("tdm.dat","r");
/* leggi i primi due valori senza poi utilizzarli */
fscanf(infile, "%d", &dummy);
fscanf(infile, "%d", &dummy);
while(fscanf(infile,"%d",&matrice[i][j])!=EOF)
{
printf("%d",matrice[i][j]);
j=(j+1)%N;
if(j==0)
i++;
}
In realtà poi la fscanf consente anche una sintassi particolare per leggere e ignorare senza usare variabili "inutili":
codice:
#define N 2
#define M 255
int matrice [N][M];
File* infile;
int i = 0;
int j = 0;
infile = fopen("tdm.dat","r");
/* leggi i primi due valori senza poi utilizzarli */
fscanf(infile, "%*d %*d");
while(fscanf(infile,"%d",&matrice[i][j])!=EOF)
{
printf("%d",matrice[i][j]);
j=(j+1)%N;
if(j==0)
i++;
}
In ogni caso anche così il tuo codice è potenzialmente a rischio di buffer overflow, dovresti terminare il ciclo, oltre che all'EOF, anche se finisce la matrice.