我无法打开某个文件夹的子文件夹
I can't open subfolders of a certain folder
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 中实现的一个函数,它递归地计算特定文件夹中目录和文件的数量,仅针对特定深度
示例:我有一个文件夹 "a",它有 2 个子文件夹 "b","c",我写了级别 1,它只会计算 "a" 中的文件,并且也在 "a/b" 和 "a/c" 中,但它不会进一步查找,例如 "a/b/d".
我不知道为什么,但是当我调用 main count("a",1,files,directories);它打开 "a",计算其中的内容,但无法打开 "b" 和 "c",并在屏幕上打印 fprintef stderr from fd=opendir(dir);
有人知道为什么吗?
因为下行时需要使用正确的路径名:
char *subpath = malloc(strlen(dir)+strlen(dp->d_name)+1);
strcpy(subpath,dir);
strcat(subpath,dp->d_name);
count(subpath,...);
free(subpath);
请记住,所有相对路径名都是从当前目录解析的。
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 中实现的一个函数,它递归地计算特定文件夹中目录和文件的数量,仅针对特定深度
示例:我有一个文件夹 "a",它有 2 个子文件夹 "b","c",我写了级别 1,它只会计算 "a" 中的文件,并且也在 "a/b" 和 "a/c" 中,但它不会进一步查找,例如 "a/b/d".
我不知道为什么,但是当我调用 main count("a",1,files,directories);它打开 "a",计算其中的内容,但无法打开 "b" 和 "c",并在屏幕上打印 fprintef stderr from fd=opendir(dir);
有人知道为什么吗?
因为下行时需要使用正确的路径名:
char *subpath = malloc(strlen(dir)+strlen(dp->d_name)+1);
strcpy(subpath,dir);
strcat(subpath,dp->d_name);
count(subpath,...);
free(subpath);
请记住,所有相对路径名都是从当前目录解析的。