ah dsl en fait j'avais pas vu que j'avais une ligne de commande tout en bas de mon _main qui refaisait free(tabl)
mais maintenant la je plante et je ne comprend vraiment pas pourquoi.... j'ai vraiment j'ai trouvé l'endroit où ca plante et c'est vraiment etrange...
#include <tigcclib.h>
short taille[3];
void creation(void)
{
taille[0]=3;taille[1]=5;taille[2]=4;
char matr[3][5][4]={{"0","1","2","3","4"},{"00","01","02","03","04"},{"000","001","002","003","004"}};
FILE *f = fopen ("matrice", "wb");
if(f==NULL) {ST_helpMsg ("erreur");ngetchx();return;}
fwrite(taille,sizeof(short),3,f);
fwrite(matr, 4*sizeof(char), 15, f);
fputc (0, f);
fputs ("data", f);
fputc (0, f);
fputc (OTH_TAG, f);
fclose (f);
}
char*** test(char ***matr)
{
short i,j;
FILE *f = fopen ("matrice", "rb");
if(f==NULL) {ST_helpMsg ("matrice introuvables");ngetchx();}
fread(taille,sizeof(short),3,f);
matr = calloc (taille[0],sizeof(**matr));
for(i=0;i<taille[0];i++)
{
matr[i]=calloc(taille[1],sizeof(*matr));
for(j=0;j<taille[1];j++)matr[i][j]=calloc(taille[2],sizeof(char));
}
fread(matr, taille[2]*sizeof(char), taille[0]*taille[1], f);
ngetchx();
fclose(f);// c'est ici que ce produit l'erreur : "adress error" ... c'est assez bizzare non?
clrscr();
printf(matr[0][0]);
ngetchx();
return matr;
}
void _main(void)
{
creation();
char ***matr=NULL;
matr=test(matr);
clrscr();
printf(matr[0][0]);
ngetchx();
free(matr);
}
g aussi esayé ca mais ca marche pas non plus , ca me depasse la ...
char*** test(char ***matr)
{
short i,j;
FILE *f = fopen ("matrice", "rb");
if(f==NULL) {ST_helpMsg ("matrice introuvables");ngetchx();}
fread(taille,sizeof(short),3,f);
fclose (f);
matr = calloc (taille[0],sizeof(**matr));
for(i=0;i<taille[0];i++)
{
matr[i]=calloc(taille[1],sizeof(*matr));
for(j=0;j<taille[1];j++)matr[i][j]=calloc(taille[2],sizeof(char));
}
FILE *f2=fopen("matrice", "rb");
fread(matr, taille[2]*sizeof(char), taille[0]*taille[1], f2);
ngetchx();
fclose(f2);// tjours : "adress error" ... c'est bizzare ...
clrscr();
printf(matr[0][0]);
ngetchx();
return matr;
}