目录遍历函数

目录遍历函数_第1张图片目录遍历函数_第2张图片目录遍历函数_第3张图片

#include 
#include 
#include 
#include 
#include 
int getFileNUm(const char* path);

int main(int argc, char* argv[]) {

    if(argc < 2) {
        printf("%s path\n", argv[0]);
        return -1;
    }
    int num = getFileNUm(argv[1]);
    printf("num:%d\n", num);
    return 0;
}

//用于获取目录下所有普通文件的个数
int getFileNUm(const char* path) {
    DIR* dir = opendir(path);
    if(dir == NULL) {
        perror("opendir");
        exit(0);
    }
    struct dirent *ptr;
    int total = 0;
    while((ptr = readdir(dir)) != NULL) {
        char *dname = ptr->d_name;
        if(strcmp(dname, ".") == 0 || strcmp(dname, "..") == 0) {continue;}
        if(ptr->d_type == DT_DIR) {
            char newpath[256];
            sprintf(newpath, "%s/%s", path, dname);
            total += getFileNUm(newpath);
        }
        if(ptr->d_type == DT_REG) {
            total++;
        }
    }

    closedir(dir);
    return total;
}

你可能感兴趣的:(Linux编程入门,linux,运维,服务器)