Ciao, ho una matrice quadrata da serializzare riga per riga. Tutto funziona tranne che, indipendentemente dalla dimensione della matrice, il terzo elemento della lista è sempre sbagliato.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void serializza(int **m, int n, int *lista);
int main()
{
int **m, *lista, n;
srand(time(NULL));
printf("dimensione matrice: ");
scanf("%d", &n);
// inizializzazione e popolamento matrice
m = (int **) malloc(n * sizeof(int *));
for (int i=0; i<n; i++)
m[i] = (int *) malloc((n * sizeof (int)));
for (int r=0; r<n; r++)
{
for(int c=0; c<n; c++)
{
m[r][c] = rand()%100;
printf("%2d ", m[r][c]);
}
printf("\n");
}
// inizializzazione vettore
lista = (int *) malloc(n*n * sizeof(int));
// serializzazione matrice
serializza(m, n, &lista);
printf("\n\n");
for (int r=0; r<n*n; r++)
{
printf("%2d ", (&lista)[r]);
printf("\n");
}
return 0;
}
void serializza(int **m, int n, int *lista)
{
for (int r=0; r<n; r++)
{
for (int c=0; c<n; c++)
lista[r*n+c] = m[r][c];
printf(" ");
}
}