Prüfen ob DateiTYP im Ordner vorhanden



  • Hi!

    BIn gerade dabei ein Programm in C zu schreiben, welches prüfen muss, ob Dateien eines bestimmten Dateityps in dem Ordner, in dem es sich befindet(also das Programm), exestieren. Zuerst hab ichs so probiert:

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

    Aber das funktioniert nicht, denn die Funktion exist sucht dann nach dem "*". Im cmd funktioniert das, ich dachte hier vllt. auch.

    Aber jetzt weiß ich nicht wie ich es anstellen soll, dass des funktioniert.

    Kann mir bitte jemand helfen?

    mfg tecno



  • Die Erwähnung von cmd lässt mich annehmen, dass das ganze auf Windows laufen soll. Da ginge das etwa so:

    #include <windows.h>
    
    /* ... */
    
    int exists(char const *pattern) {
      HANDLE h;
      WIN32_FIND_DATA wfd;
    
      h = FindFirstFileA(pattern, &wfd);
    
      if(h == INVALID_HANDLE_VALUE) {
        return 0;
      }
    
      FindClose(h);
    
      return 1;
    }
    

    wobei es dann unter Windows eigentlich üblich wäre, mit TCHAR etc. zu arbeiten, etwa

    #include <tchar.h>
    #include <windows.h>
    
    /* ... */
    
    int exists(LPCTSTR pattern) {
      HANDLE h;
      WIN32_FIND_DATA wfd;
    
      h = FindFirstFile(pattern, &wfd);
    
      if(h == INVALID_HANDLE_VALUE) {
        return 0;
      }
    
      FindClose(h);
    
      return 1;
    }
    
    /* ... */
    
    if(exists(_T("*.dat"))) {
      /* ... */
    }
    


  • #include <windows.h>
    

    Was ist denn das?
    😕



  • Der Header mit der Windows-API?



  • wxSkip schrieb:

    Der Header mit der Windows-API?

    Was mngbd damit sagen will: "ANSI C wo bist du?"



  • #include <windows.h>
    

    Das ist Ansi C. 😉



  • seldon schrieb:

    Die Erwähnung von cmd lässt mich annehmen, dass das ganze auf Windows laufen soll.

    ...wer lesen kann, ist klar im Vorteil.

    Mit ANSI-C allein ist das Problem nicht lösbar. Jetzt sind wir uns alle einig, dass der Thread eigentlich ins WinAPI-Forum gehört, aber allein darauf hinzuweisen, schien mir nicht besonders hilfreich.



  • @seldon

    danke, es funzt!!! 🙂


Anmelden zum Antworten