Eine weitere Funktion innerhalb einer funktion öffnen



  • Hi Leute!

    Kann mir einer sagen, wie ich aus einer Funktion eine weitere aufrufe???

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    
    void einstellungen()
    {
        printf("\t\t\tEinstellungen\n\n");
        oeffnen("\config.txt"); 
    }
    
    void oeffnen(char datei[80])
    {
        FILE *datei_ptr;
        datei_ptr=fopen(datei,"w");
        if(datei_ptr = NULL)
            {
            printf("Datei konnte nicht geöffnet werden");
            }
    }
    
    void main()
    {
    	int auswahl;
      printf("\n\n\t Auswahl:  ");
      scanf("%i",&auswahl);
      if (auswahl==1) 
      {
        einstellungen();
      }
    }
    

    Ich möchte jetzt gerne aus der Funktion einstellungen die funktion oeffnen aufrufen, aber bekomme immer einen Fehler!!!
    Kann mir einer sagen wie ich das mache?

    MFG
    frekka



  • Die funktion oeffnen muss vor der funktion einstellungen bekannt sein, muss also im Quelltext davor stehen.

    Da das nicht immer machbar ist, fügt man sogenannte Prototypes ein und zwar noch bevor irgendwelche Funktionen definiert werden. In deinem fall also nach den #defines

    void oeffnen(char datei[80]); // dies ist ein funktonsprototyp und der compiler weiß somit, was für eine funktion aufgerufen werden soll

    // jetzt geht's normal weiter

    void einstellungen .....

    viel spaß
    daniel



  • ich meinte natürlich nach den
    #includes

    daniel



  • Aber trotzdem bekomme ich noch eine Fehlermeldung.

    #include<stdio.h> 
    #include<conio.h> 
    #include<stdlib.h> 
    
    void oeffnen(char);
    void einstellungen();
    
    void einstellungen() 
    { 
        printf("\t\t\tEinstellungen\n\n"); 
    	oeffnen("daten.txt");
    } 
    
    void oeffnen(char datei[80]) 
    { 
        FILE *datei_ptr; 
        datei_ptr=fopen(datei,"w"); 
        if(datei_ptr = NULL) 
            { 
            printf("Datei konnte nicht geöffnet werden"); 
            } 
    } 
    
    void main() 
    { 
        int auswahl; 
      printf("\n\n\t Auswahl:  "); 
      scanf("%i",&auswahl); 
      if (auswahl==1) 
      { 
        einstellungen(); 
      } 
    }
    

    Kannst du mir sagen, wie ich den dateinamen übergeben muss??
    MFG



  • Schau mal:

    if(datei_ptr = NULL)
    

    Solche verflixten Fehler kosten Firmen viel Geld und Zeit. 😉
    Es heisst natuerlich == da es ein vergleich und keine Zuweisung ist.

    //edit: Ach ja, um solche Fehler zu vermeiden kannst du dir Zukuenftig angewoehnen das ganze so zu schreiben: if(NULL==datei_ptr). Dann meckert der Compiler, wenn du aus versehen einmal ein = vergisst.



  • aber trotzdem schmeißt der noch nen Fehler raus*g* kannst es ja mal selber ausprobieren. WEiß nicht, was falsch ist.
    MFG



  • Du willst doch hoffentlich IN die Datei schreiben und nicht daraus lesen, oder?



  • Ich will darin schreiben. warum??



  • Okay, noch was:

    void oeffnen(char);
    

    Stimmt das? 😉



  • oh stimmt*g* jetzt funktioniert es. Danke
    MFG
    frekka



  • WEiß du zufällig auch, wie ich Ordner in C erstellen kann?? Hab da so nichts drüber gefunden.



  • mkdir()


Anmelden zum Antworten