Rekursive Dateisuche



  • Hallo,

    hab ein Problem mit meiner Datei-Suchfunktion.

    ich kann zb nicht nach ".txt" oder so suchen und irgendwas läuft nicht richtig auch wenn ich viele richtige/treffende Ergebnisse bekomme.

    Viell könnt ihr mir ja helfen, hier mal der (noch nicht fertige) Code:

    #include <windows.h>
    #include <stdio.h>
    
    int listenup_files(char path[]);
    int index=0;
    
    char string[200];
    char files[1000][300];
    
    int main()
    {
    
    int i=0;
    
    char directory[6]="C:";
    char dp[2]=":";
    char doubleslash[3]="\\";
    
    //GetWindowsDirectory(directory,sizeof(directory+1));
    
    //lstrcat(directory,dp);
    //lstrcat(directory,doubleslash);
    
    printf("Nach was wollen sie suchen\n"); 
    scanf("%s",&string);
    listenup_files(directory);
    printf("\n");
    printf("end\n");
    
    return 0;
    
    }
    
    int listenup_files(char path[])
    {
    
    char new_string[200]; 
    char path_2[200];       
    
    HANDLE fHandle; 
    WIN32_FIND_DATA wfd; 
    
    strcpy(path_2,path);
    lstrcat(path_2,"\\*");
    
    fHandle=FindFirstFile(path_2,&wfd); 
    
    do 
    { 
    
        if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) )) 
        { 
            if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
            { 
    
                   strcpy(new_string,path);
    	       lstrcat(new_string,"\\");
    	       lstrcat(new_string,wfd.cFileName);
                   if(strstr(wfd.cFileName,string)!=NULL)
    	       {
                    printf("%s\n",wfd.cFileName);
                    strcpy(files[index],new_string);
    		   index++;
    
    	       }
    	       listenup_files(new_string);                      
    
            } 
            else 
            { 
    
                 if(strstr(new_string,string)!=NULL)
    	      { 
                    printf("%s\n",wfd.cFileName);
                    strcpy(files[index],new_string);
    		   index++;
                 } 
            } 
        }
    } 
    while (FindNextFile(fHandle,&wfd)); 
    FindClose(fHandle);
    
    return 0;
    }
    


  • es gibt doch hier im forum bereits genug funktionierenden code dafür, warum benutzt du den nicht?



  • Hallo, hab die Suche verwendet, gibt keine rekursiv funktionierenden Codes.



  • muhi schrieb:

    Hallo,

    hab ein Problem mit meiner Datei-Suchfunktion.

    ich kann zb nicht nach ".txt" oder so suchen und irgendwas läuft nicht richtig

    wie meinst du das bzw. was läuft da nicht richtig? und noch was: der doubleshlash benötigt 1 zeichen, mit der nullterminierung 2 😉



  • Wie wärs mal mit ner Debugsession... 🙄

    Gruß



  • // if(strstr(new_string,string)!=NULL) 
     if(strstr(wfd.cFileName,string)!=NULL)
    

    🙂



  • gg, danke, habs vergessen auch hier auszubessern.

    mfg ^^



  • muhi schrieb:

    Hallo, hab die Suche verwendet, gibt keine rekursiv funktionierenden Codes.

    quod erat demonstrandum: http://www.c-plusplus.net/forum/viewtopic-var-t-is-168044-and-highlight-is-*rekursiv*.html


Anmelden zum Antworten