Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150

    [C] Passaggio di parametri

    Ho creato questa funzione che mi apre un file ma kuando la richiamo dal main non mi ritorna il file descriptor ottenuto dalla fopen chi mi da una mano ?


    void OpenLogFile ( FILE *FileDesc )
    {
    FileDesc = fopen( "miofile" , "w");
    }


    int main()
    {
    FILE *FileDesc ;

    OpenLogFile ( FileDesc );
    fprintf(FileDesc ,"prova"); << Segmentation fault

    ......
    }
    Carlo Carbone

  2. #2
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    forse il problema è che la tua variabile FileDesc la pardi quando termina la funzione OpenLogFile .

    Una soluzione puo essere

    FILE* OpenLogFile (char* mioFile )
    {
    return FileDesc = fopen( "miofile" , "w");
    }


    fp=OpenLogFile(path);//una chiamata



  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150
    si perdo il valore avevo dimenticato di scriverlo ma preferirei la mia soluzione ovvero passare il filedesc come parametro enn ttenerlo come risultato di funzioneee
    Carlo Carbone

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] Passaggio di parametri

    Allora devi fare:

    codice:
    void OpenLogFile ( FILE **FileDesc )
    {
      *FileDesc = fopen( "miofile" , "w");
    }
    
    
    int main()
    {
      FILE *FileDesc ;
    
      OpenLogFile ( &FileDesc ); 
      fprintf(FileDesc ,"prova");   << Segmentation fault
    
      ......
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    molto giusto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.