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;
有谁知道为什么?
答案 0 :(得分:3)
因为你需要在降序时使用正确的路径名:
Android
请记住,所有相对路径名都是从当前目录中解析的。