il file Mappa.txt:codice:Mappa.h: typedef struct _mappa { int *Mappa; int NRighe; int NColonne; int InizioX; int InizioY; int FineX; int FineY; } MAPPA; // Carico il labirinto MAPPA *CreaMappa( char *NomeFile ); Mapp.c: #include <stdio.h> #include "Mappa.h" MAPPA *CreaMappa( char *NomeFile ) { FILE *Lab; MAPPA *M; char *FileMappa; int i, j, Size; int result; M = (MAPPA*)malloc(sizeof(MAPPA)); /* Controllo che il file sia correttamente aperto */ if(( Lab = fopen(NomeFile, "r")) == NULL ) { printf( "\nImpossibile aprire il file\n" ); } else { /* Posiziono il cursore alla fine del file */ fseek(Lab, 0L, SEEK_END); /* Salvo la lunghezza del file */ Size = ftell(Lab); /* Riposiziono il cursore all'inizio del file */ fseek(Lab, 0L, SEEK_SET); FileMappa = (char*)malloc(sizeof(char)*Size); /* Copio il file nel buffer */ result = fread(FileMappa,sizeof(char),Size,Lab); printf("\nResult: %d", result); printf("\nSize: %d", Size); /*if ( result != Size ) { fputs("\nErrore nella lettura del file!\n", stderr); system("PAUSE"); exit(1); }*/ printf("Stampa il file salvato in memoria:\n"); printf("%s", FileMappa); /* Chiudo il file */ fclose(Lab); free(FileMappa); } }
L'output sarà tutta la mappa e poi continua con altri caratteri sporchi.codice:999999999999999999999115 999999911111111111111199 999999999999911111999999 111999991111111199999999 991111111199999999999999 993999999999999999999999
Inoltre:
Result: 149
Size: 154
Non riesco a capire perchè Result non è uguale a Size.
Come posso sapere il numero di righe e di colonne poichè devo salvare le informazione rispettivamente nei campi M->NRighe e M->NColonne della struttura?
Grazie anticipatamente.

Rispondi quotando
