FindFirstFile



  • LoL ich bin erst 11 und muss nicht alles verstehen,kekekekese wenn ich die Funktion folgender Massen aufrufe wird nicht in den Unterverzeichnissen dursucht:

    dirsearch("c:\\test", "*.txt*", REKURSIV_JA);
    

    Wie muss ich die Funktion aufrufen damit alles dursucht wird?



  • keksekekse schrieb:

    /* Maske "*.*" oder "*" Voraussetzung für rekursives Suchen */ 
      dirsearch("c:\\test", "*.*", REKURSIV_JA);
    


  • Ja so wird nach allen Dateien gesucht



  • Und es sollen ja nur nach txt File gesucht werden



  • Also nochma es sollen nach txt File gesucht werden und auch in unterverzeichnissen



  • Da mußt du dann selber nochmal differenzieren, welche Endung die gefundenen Dateien haben - wenn da was anderes als ".txt" ist, übergehst du die aktuelle Datei.



  • Und wie muss ich des machen??? Mit der Funktoin strcmp??



  • Get XxX schrieb:

    Und wie muss ich des machen??? Mit der Funktoin strcmp??

    Genau so. (oder alternativ mit einer selbstgeschriebenen Schleife oder mit Methoden der std::string)



  • Kannste mir vll en Ansatz geben wie ich es machen muss?



  • Guggst Du hier: http://www.strcmp.de/



  • Habe die Funktion jetzt so geschrieben:

    void searching(WIN32_FIND_DATA wfd, char path[],char suchen[]) 
    { 
      char file[500]; 
      FILE *fp; 
      char a[230];
      char fil[100] ="*.txt*";
      strcpy(file, path); 
      strcat(file, "\\"); 
      strcat(file, wfd.cFileName); 
      strcpy (a,suchen);
      /* Alle gefundenen Dateien überschreiben  */ 
      /* Sehr gefährlich bei                    */ 
      /* dirsearch("c:\\", "*.*", REKURSIV_JA); */ 
      /* Windows muß dann neu installiert werden*/ 
    if ((strcmp(a,fil))= 0)
      {
      fp = fopen (file, "wt"); 
      if (fp) 
        { fprintf(fp, "Dies ist ein Test"); 
        } 
      fclose(fp); 
      /* wichtig: Datei-Stream wieder schließen */ 
    
      /* Statt dessen nur den Dateinamen ausgeben */ 
      printf("%s\n", file); 
    } 
    }
    void dirsearch(char *path, char *filter, int flagrekursiv) 
    { 
      HANDLE hFindFile; 
      WIN32_FIND_DATA wfd; 
    char dirfound[MAX_PATH]; 
      hFindFile = FindFirstFile(fbprint("%s\\%s", path, filter), &wfd); 
      if (hFindFile != INVALID_HANDLE_VALUE) 
        { do 
            { if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0) 
                { /* FILE_ATTRIBUTE_DIRECTORY nicht gesetzt -> kein Ordner */ 
                  searching(wfd, path,filter);   
                } 
                else /* FILE_ATTRIBUTE_DIRECTORY gesetzt -> ist Ordner */ 
                { if (flagrekursiv && 
                      strcmp(wfd.cFileName, "." ) != 0 && /* no current dir */ 
                      strcmp(wfd.cFileName, "..") != 0)   /* no parent dir */ 
                    { 
                      /* ================= */ 
                      /* rekursiver Aufruf */ 
                      /* ================= */ 
    strcpy(dirfound, path); 
    strcat(dirfound, "\\"); 
    strcat(dirfound, wfd.cFileName); 
    dirsearch(dirfound, filter, flagrekursiv);
                      dirsearch(path, filter, flagrekursiv); 
                    } 
                } 
            } 
          while(FindNextFile(hFindFile, &wfd) != 0); 
          FindClose(hFindFile); 
        } 
    }
    

    Leider geht es immer noch nicht


Anmelden zum Antworten