scan a directory to find files in c

后端 未结 3 884
借酒劲吻你
借酒劲吻你 2020-12-03 06:30

I\'m trying to create a function in c which scans all my path C: \\ temp (Windows) to search for a file that I pass (eg test.txt) and each time it finds one return the path

相关标签:
3条回答
  • 2020-12-03 06:43

    Use FindFirstFile function. Here's a good example of this function using.

    0 讨论(0)
  • 2020-12-03 06:45
    #include <unistd.h>
    #include <stdio.h>
    #include <dirent.h>
    #include <string.h>
    #include <sys/stat.h>
    #include <stdlib.h>
    void printdir(char *dir, int depth)
    {
        DIR *dp;
        struct dirent *entry;
        struct stat statbuf;
        if((dp = opendir(dir)) == NULL) {
            fprintf(stderr,"cannot open directory: %s\n", dir);
            return;
        }
        chdir(dir);
        while((entry = readdir(dp)) != NULL) {
            lstat(entry->d_name,&statbuf);
            if(S_ISDIR(statbuf.st_mode)) {
                /* Found a directory, but ignore . and .. */
                if(strcmp(".",entry->d_name) == 0 ||
                    strcmp("..",entry->d_name) == 0)
                    continue;
                printf("%*s%s/\n",depth,"",entry->d_name);
                /* Recurse at a new indent level */
                printdir(entry->d_name,depth+4);
            }
            else printf("%*s%s\n",depth,"",entry->d_name);
        }
        chdir("..");
        closedir(dp);
    }
    
    int main()
    {
        printf("Directory scan of /home:\n");
        printdir("/home",0);
        printf("done.\n");
        exit(0);
    }
    
    0 讨论(0)
  • 2020-12-03 06:54
    #include<stdio.h>
    #include<stdlib.h>
    #include<sys/types.h>
    #include<sys/dir.h>
    #include<dirent.h>
    #include<fcntl.h>
    #include<unistd.h>
    #include<string.h>
    void searchInDirectory(char *dirname){
        DIR *dir;
        struct dirent *dirp;
        dir=opendir(dirname);
        chdir(dirname);
        while((dirp=readdir(dir))!=NULL){
            if(dirp->d_type==4){
                if(strcmp(dirp->d_name, ".")==0 || strcmp(dirp->d_name, "..")==0){
                    continue;
                }
                printf("%s %s\n", "FOLDER", dirp->d_name);
                searchInDirectory(dirp->d_name);
            }
            else{
                printf("%s %s\n", "FILE", dirp->d_name);
            }
        }
        chdir("..");
        closedir(dir);
    }
    int main(){
        searchInDirectory(".");
        return 0;
    }
    
    0 讨论(0)
提交回复
热议问题