Ora ho un altro problema:
ecco il codice:
codice:
// Dichiarazione della struttura contenente le info per il salvataggio
struct Salvataggio
{
int **matrix;
int righe;
int colonne;
char giocatore1[20];
char giocatore2[20];
};
int salva_partita (int **matrix, int righe, int colonne, char *giocatore1, char *giocatore2)
{
char *filename = "save.dat";
FILE *fp;
int vero=TRUE, falso=FALSE;
struct Salvataggio *salvataggio;
salvataggio = (struct Salvataggio *) malloc(sizeof(struct Salvataggio)); // alloco la memoria per una struct Salvataggio
/* Salvo tutti i valori nei rispettvi campi della struttura */
salvataggio->matrix = alloca_matrice(righe, colonne); // alloco memoria per la matrice della struttura in cui salverò la matrice originale
copia_matrice(salvataggio->matrix, matrix, righe, colonne); // copio la matrice originale nella matrice della struttura
salvataggio->righe = righe;
salvataggio->colonne = colonne;
strcpy(salvataggio->giocatore1, giocatore1);
strcpy(salvataggio->giocatore2, giocatore2);
if((fp = fopen(filename, "wb")) == NULL) // apro il file binario in scrittura
return falso; // se il file non si apre correttamente la funzione termina
if(fwrite(salvataggio, sizeof(struct Salvataggio), 1, fp) != 1) // salvo la struct Salvataggio nel file
{
fclose(fp); // se la scrittura non avviene correttamente
return falso; // chiudo il file e la funzione termina
}
fclose(fp); // chiudo il file
return vero;
}
Dopo che faccio il salvataggio di una struttura di questo tipo in cui salvo le info che passo come parametri alla funzione salva_partita, come posso crearmi una funzione per caricare quello che ho salvato sul file in un'altra struct Salvataggio?
Il problema sta nel fatto che non so come fare ad allocare spazio per il campo **matrix della struct in cui salverò i dati letti dal file. Non riesco a fare questo per il semplice fatto che ancora non conosco il valore di righe e colonne che devo anch'essi leggere dal file. Magari è possibile leggere i campi separatamente?
Grazie per l'aiuto.