Je n'arrive pas à faire ça correctement... Le but est de :
- Sauver deux tableaux à deux dimentions, plus deux entier pour indiquer justement ces dimentions, dans un fichier externe
- Ouvrir ce fichier externe, et allouer dynamiquement en mémoire les deux tableaux
Voilà les deux programmes :
Sauvegarde :
// Definition de deux tableaux tbl_mps et tbl_mpt, ainsi que leurs dimentions dans int_dmx et int_dmy
fil_map=fopen(chr_nam,"wb")
fwrite(&int_dmx,1,sizeof(int),fil_map); // Sauvegarde des
fwrite(&int_dmy,1,sizeof(int),fil_map); // deux dimentions
fwrite(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map); // Sauvegarde des
fwrite(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map); // deux tableaux
fputc(0,fil_map);
fputs("GBM",fil_map);
fputc(0,fil_map);
fputc(OTH_TAG,fil_map);
fclose(fil_map);
Chargement :
char **tbl_mps=NULL,**tbl_mpt=NULL,chr_nam[8];
[...]
fil_map=fopen(chr_nam,"r")
fread(&int_dmx,1,sizeof(int),fil_map); // Lecture des deux première données : les dimentions
fread(&int_dmy,1,sizeof(int),fil_map);
printf_xy(2,64,"Taille : %d x %d",int_dmx,int_dmy,A_NORMAL); // Affichage pour vérification
ngetchx();
tbl_mps=calloc(int_dmy,sizeof(**tbl_mps)); // Allocation dynamique des deux tableaux (première partie)
tbl_mpt=calloc(int_dmy,sizeof(**tbl_mpt));
for(int_for=0;int_for<int_dmy;int_for++)
{ // Allocation dynamique des deux tableaux (deuxième partie)
tbl_mps[int_for]=calloc(int_dmx,sizeof(**tbl_mps));
tbl_mpt[int_for]=calloc(int_dmx,sizeof(**tbl_mpt));
}
fread(tbl_mpt,1,int_dmx*int_dmy*sizeof(char),fil_map);
fread(tbl_mps,1,int_dmx*int_dmy*sizeof(char),fil_map);
fclose(fil_map);
Bon déjà je ne suis pas sûr que la technique d'allocation soit bonne, mais avant il y a un autre problème : lors de l'affichage avec printf_xy, les deux variables 'dimentions' n'ont pas du tout les valeurs que je leur avait donné dans le 1er programme.
Pkoi ???