View Single Post
Old 27-08-2009, 15:35   #1
Re_Kotc
Senior Member
 
L'Avatar di Re_Kotc
 
Iscritto dal: Aug 2003
Città: verona
Messaggi: 541
[C] - problema double pointer a file

ciao a tutti, sto cercando di far funzionare questo programmino (non l'ho scritto io è di un amico ) ma crasha sempre, il main è questo:

Codice PHP:
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ì:

Codice PHP:
//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
__________________
CASE: Cooler Master Stacker 831 Silver MOBO: Asus Maximus Formula CPU: Intel Q6600@2,4ghz RAM: 2x 1GB Corsair XMS2 pc2-8500@1066mhz + 2x2GB Corsair XMS2 pc2-8500@1066mhzVGA: ATI Sapphire RADEON 5830 1GB GDDR5 HD: 2 x WD Caviar SE16 500GB Raid 0
Re_Kotc è offline   Rispondi citando il messaggio o parte di esso