Re_Kotc
27-08-2009, 15:35
ciao a tutti, sto cercando di far funzionare questo programmino (non l'ho scritto io è di un amico :)) ma crasha sempre, il main è questo:
int main()
{
FILE ** in;
FILE ** out;
printf("%p\n",in);
char * filein = "PIDin.txt" ;
char * fileout = "DataOut.data" ; //openCommChannels(args[1],args[2],in,out);
openCommChannels(filein , fileout , in , out);
printf("metà\n");//
FILE * a,* b;
printf("%p\n",in);
printf("pre assegn\n");
a=(*in);
b=(*out);
closeCommChannels(a,b);
return 0;
}
la funzione openCommChannels è definita così:
//apre i canali di comunicazione per l'ingresso e l'uscita
int openCommChannels(char const * inputFileName , char const * outputFileName , FILE ** ifpp , FILE ** ofpp){
//printf("inizio openComm");
FILE * x;
FILE * y;
x=fopen(inputFileName ,"r");
y=fopen(outputFileName , "w");
printf("pre controllo su ifpp\n");
if(x== NULL){
fprintf(stderr,"Impossibile aprire il file da cui leggere");
return -1;
}
else {
printf("pointer pre %p",ifpp);
//ifpp = &x;
*ifpp = x;
printf("pointer post %p",ifpp);
//printf("ok");
}
if(y== NULL){
fprintf(stderr,"Impossibile aprire il file su cui scrivere");
return -1;
}
else
*ofpp = y;
return 0;
};
se lo eseguo l'output del programma è:
76c0db07
pre controllo su ifpp
pointer pre 76c0db07
e poi il tutto crasha...quindi il problema dovrebbe essere qui
*ifpp = x;
e non capisco perchè!
avete suggerimenti? :) grazie mille
int main()
{
FILE ** in;
FILE ** out;
printf("%p\n",in);
char * filein = "PIDin.txt" ;
char * fileout = "DataOut.data" ; //openCommChannels(args[1],args[2],in,out);
openCommChannels(filein , fileout , in , out);
printf("metà\n");//
FILE * a,* b;
printf("%p\n",in);
printf("pre assegn\n");
a=(*in);
b=(*out);
closeCommChannels(a,b);
return 0;
}
la funzione openCommChannels è definita così:
//apre i canali di comunicazione per l'ingresso e l'uscita
int openCommChannels(char const * inputFileName , char const * outputFileName , FILE ** ifpp , FILE ** ofpp){
//printf("inizio openComm");
FILE * x;
FILE * y;
x=fopen(inputFileName ,"r");
y=fopen(outputFileName , "w");
printf("pre controllo su ifpp\n");
if(x== NULL){
fprintf(stderr,"Impossibile aprire il file da cui leggere");
return -1;
}
else {
printf("pointer pre %p",ifpp);
//ifpp = &x;
*ifpp = x;
printf("pointer post %p",ifpp);
//printf("ok");
}
if(y== NULL){
fprintf(stderr,"Impossibile aprire il file su cui scrivere");
return -1;
}
else
*ofpp = y;
return 0;
};
se lo eseguo l'output del programma è:
76c0db07
pre controllo su ifpp
pointer pre 76c0db07
e poi il tutto crasha...quindi il problema dovrebbe essere qui
*ifpp = x;
e non capisco perchè!
avete suggerimenti? :) grazie mille