Ciao a tutti ho un problema che proprio non riesco a capire...
ecco il coddice:
codice:
#include <stdio.h>
#include <stdlib.h>
int ** alloca_matrice (int righe, int colonne);
void dealloca_matrice(int **matrix, int righe);
void inizializza_matrice (int **matrix, int righe, int colonne);
main ()
{
char *filename = "save.dat";
FILE *fp;
int **matrice = NULL, **matrice2;
matrice = alloca_matrice(6,7);
inizializza_matrice(matrice, 6,7);
matrice2 = matrice;
fp = fopen(filename, "wb");
fwrite(matrice2, sizeof(int), 42, fp);
fclose(fp);
dealloca_matrice(matrice, 6);
fp = fopen(filename, "rb");
fread(matrice2, sizeof(int), 42, fp);
fclose(fp);
printf("\n\t%d\n", matrice2[0][0]);
return 0;
}
int ** alloca_matrice (int righe, int colonne)
{
int **matrix, i;
if(!(matrix= (int **) malloc (righe * sizeof(int *))))
return(NULL);
for (i=0; i<righe; i++)
{
if(!(matrix[i]= (int *) malloc(colonne * sizeof(int))))
return(NULL);
}
return(matrix);
}
void dealloca_matrice(int **matrix, int righe)
{
int i=0;
for(i=0; i<righe; i++)
{
free(matrix[i]);
}
free(matrix);
}
void inizializza_matrice (int **matrix, int righe, int colonne)
{
int i, j;
for (i=0; i<righe; i++) {
for (j=0; j<colonne; j++) {
matrix[i][j]= 0;
}
}
}
il problema è che dopo aver deallocato matrice, quando vado a caricare da file quello che avevo salvato e lo metto su matrice2 la printf finale mi stampa un numero tipo -1233242345. In pratica in matrice2 non mi si salva quello che io salvo su file.
Sto andando fuori di testa per questo problema
.
Grazie.