gpt4 book ai didi

C 目录和子目录递归

转载 作者:行者123 更新时间:2023-11-30 15:58:03 25 4
gpt4 key购买 nike

我尝试递归获取所有文件和文件夹列表。但我只能获取文档的子目录及其内部。我无法获取子目录内部的其他文件夹。我不知道如何递归地执行它。我希望你帮助我

          #include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <windows.h>
#include <unistd.h>
#include <string.h>
void list(char *a);
void reader(char *path);
int
main (void)
{
DIR *dp;
struct dirent *ep;

dp = opendir ("C:\\Users\\pen\\Documents\\");
if (dp != NULL)
{
while (ep = readdir (dp)){

GetFileAttributes(ep->d_name);
if(FILE_ATTRIBUTE_DIRECTORY & GetFileAttributes(ep->d_name))
{

if (strcmp(".",ep->d_name)==0)
continue;

if (strcmp("..",ep->d_name)==0)
continue;



reader(ep->d_name);

}

}
closedir(dp);

}
else
perror ("Couldn't open the directory");
closedir(dp);
system("pause");
return 0;
}
void reader(char *path){
DIR *da;
struct dirent *ef;
da = opendir(path);
while (ef=readdir(da)){
printf ("%s\n",ef->d_name);
if(FILE_ATTRIBUTE_DIRECTORY & GetFileAttributes(ef->d_name))
{

if (strcmp(".",ef->d_name)==0)
continue;


if (strcmp("..",ef->d_name)==0)
continue;
reader(ef->d_name);

}
}
closedir(da);
}

最佳答案

1) 在 reader 中,您需要在 while 循环之后调用 linedir(da);

2) 每次调用 reader 都需要有连接 path 所需的绝对路径

ef->d_name 然后调用 reader。

3) 另外,为了启用调试,您应该在 readdir 调用失败后调用 perror

关于C 目录和子目录递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061186/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com