4Fermer6
bidooLe 05/06/2004 à 14:21
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) grin

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;	
}