Pointer NULL wenn der Pointer in den Wald zeigt ?



  • Hallo ich hab mal eine Frage zu Pointern.

    Ich habe folgende Funktion welche überprüft ob ein file existiert.

    int function(char *file1)
    {
      FILE *file1 = fopen(file1, "rb");
    
      if(file1 == NULL)
      {
        fclose(file1);
        return 2;
      }
    
      fclose(file1);
    
      return 0;
    }
    

    Meine Frage nun muss ich *file1 nun vorher mit NULL initialisieren ?
    Es könnte doch sein dass auf der Speicherstelle was steht obwohl nix eingelesen wurde und return 0 liefern würde obwohl das ja dann gar nicht stimmt oder ?

    LG



  • Dani1 schrieb:

    Meine Frage nun muss ich *file1 nun vorher mit NULL initialisieren ?

    Was meinst du mit "vorher"? Du initialisierst es mit dem Rückgabewert von fopen, was reicht dir denn daran nicht?

    edit: Zu der Frage im Topic: Wenn der Pointer "in den Wald" zeigt, ist er kein Nullpointer. Das hat aber mit der Frage nichts zu tun, da file1, wie gesagt, initialisiert wird. BTW, das erste fclose ist mindestens sinnlos, vielleicht auch falsch.



  • Du hast zwei Variablen, die gleich heissen.

    int function(char *file1)
    {
      FILE *file1 = fopen(file1, "rb");
    

    Das führt zu unerwünschten Ergebnissen. Ich würde eine davon umbenennen.



  • Hallo Leute vielen Dank!

    Mein Denkfehler ist mir jetzt klar 🙂 !!
    Eine andere Frage zur Schreibweise

    ist es eigentlich egal ob man schreibt:

    FILE *file1_pointer = fopen(file1, "rb");

    oder

    FILE *file1_pointer;
    file1_pointer = fopen(file1, "rb");

    Lg 🙂



  • ...



  • Ah vielen Dank 🙂


Anmelden zum Antworten