我无法打开某个文件夹的子文件夹

时间:2016-12-02 13:44:56

标签: c linux dirent.h

void count(char *dir, int levels, int *filecount, int *dircount) {
    struct dirent *dp;
    DIR *fd;

    if ((fd=opendir(dir))==NULL) {
        fprintf(stderr, "count: can't open %s\ncount stopped.", dir);
        exit(0);
    }

    while((dp = readdir(fd))!=NULL){
        if(!strcmp(dp->d_name, ".")||!strcmp(dp->d_name, ".."))
            continue;
        if(dp->d_type==DT_REG){ /* Regular file */
            (*filecount)++;
        }
        if(dp->d_type==DT_DIR){ /* Directory */
            (*dircount)++;
            if(levels>0){
                count(dp->d_name,levels-1,filecount,dircount);
            }
        }
    }
    closedir(fd);
}

这是我试图在C中实现的函数,递归计算某个folde中的目录和文件的数量,仅用于某个深度

示例:我有一个文件夹" a"有2个子文件夹" b"," c"我写的是1级,它只计算" a"中的文件,以及" a / b"和" a / c",但它不会进一步查看,例如" a / b / d"。

我不知道为什么,但是当我打电话给主要数字时(" a",1,文件,目录);它会打开" a",计算其中的内容,但它无法打开" b"和" c",并在屏幕上从fd = opendir(dir)打印fprintef stderr;

有谁知道为什么?

1 个答案:

答案 0 :(得分:3)

因为你需要在降序时使用正确的路径名:

Android

请记住,所有相对路径名都是从当前目录中解析的。