C - Serializzazione matrice

di il
2 risposte

C - Serializzazione matrice

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(" ");
    }
}

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte