IF EXIST in C



  • Hallo,
    im CMD von WIndows gibt es einen Befehl, der die Existenz einer Datei überprüft.
    z.b.:

    IF EXIST "Pfad\Datei" do beispiel else do beispiel
    

    wie kann man das in C machen?

    mfg tecno



  • ungefähr so:

    int exist (char *name)
    {
      FILE *fp = fopen (name, "r");
      if (fp)
         fclose (fp);
      return fp != 0;
    }
    

    🙂



  • Hallo,

    siehe auch:

    http://c-faq.com/osdep/fileexists.html

    MfG,

    Probe-Nutzer



  • Basher schrieb:

    int exist (char *name)
    {
      FILE *fp = fopen (name, "r");
      if (fp)
         fclose (fp);
      return fp != 0;
    }
    

    funzt nich wirklich. Der Compiler spuckt ein paar Fehler aus
    ich zeig euch mal was ich geschrieben hab...

    12: int exist (char *WinFLip.exe)
    13:{
    14:  FILE *fp = fopen (WinFlip.exe, "r");
    15:  if (fp)
    16:     fclose (fp);
    17:  return fp != 0;
    18:  goto FOUND;
    19:}
    20:else
    21:{goto NODATA;
    22:}
    

    naja und die fehler aus meinem compiler:

    `12: error: expected ',' or '...' before '.' token

    13: error: 'int exist(char*)' previously defined here

    14: error: 'WinFLip' was not delared in this scope

    20: error: expected unqualified-id before "else"

    `

    Was soll ich da jetz ändern?

    mfg tecno



  • dir ist schon klar, dass exist eine Funktion ist und, dass sie nicht einfach so innerhalb einer anderen Funktion eingebetet werden kann, oder?



  • tecnologymaster schrieb:

    funzt nich wirklich.

    Nee, so wie du es versucht hast, nicht... 😉

    Zeichenketten gehören auch immer in Anführungszeichen, sonst sind's keine Zeichenketten.

    Probier mal so:

    int exist (char *name)
    {
      FILE *fp = fopen (name, "r");
      if (fp)
         fclose (fp);
      return fp != 0;
    }
    
    int main() {
      if(exist("C:\\test.txt")) {
        printf("Datei existiert!");
      }else {
        printf("Datei existiert nicht!");
      }
    }
    


  • dir ist schon klar, dass exist eine Funktion ist und, dass sie nicht einfach so innerhalb einer anderen Funktion eingebetet werden kann, oder?



  • supertux schrieb:

    dir ist schon klar, dass exist eine Funktion ist und, dass sie nicht einfach so innerhalb einer anderen Funktion eingebetet werden kann, oder?

    Das fällt dir auf, aber das hier

    fopen (WinFlip.exe, "r");
    

    nicht?? 😃 😉

    EDIT: Wundert mich, dass noch keiner nach der Deklaration des structs WinFlip gefragt hat... 😉



  • _matze schrieb:

    supertux schrieb:

    dir ist schon klar, dass exist eine Funktion ist und, dass sie nicht einfach so innerhalb einer anderen Funktion eingebetet werden kann, oder?

    Das fällt dir auf, aber das hier

    fopen (WinFlip.exe, "r");
    

    nicht?? 😃 😉

    WinFlip.exe könnte ja ein char* sein 😉 aber wenn du es genau schaust, dann hat er ein else nach der letzten '}' Klammer der exist Funktion!



  • supertux schrieb:

    WinFlip.exe könnte ja ein char* sein aber wenn du es genau schaust, dann hat er ein else nach der letzten '}' Klammer der exist Funktion!

    so wie's aussieht, hat er ein C turorial noch nicht mal von weitem gesehen.
    🙂



  • supertux schrieb:

    WinFlip.exe könnte ja ein char* sein 😉

    Klar, davon bin ich überzeugt. Er hat bestimmt nur vergessen, den Header zu inkludieren, in dem das WinFlip-struct deklariert ist. 😃

    supertux schrieb:

    wenn du es genau schaust, dann hat er ein else nach der letzten '}' Klammer der exist Funktion!

    Klar, hab ich nicht bestritten. 🙂



  • geil, der thread is echt funny 😉


Anmelden zum Antworten