gpt4 book ai didi

c - 如何打印所有目录以及这些目录下的文件?

转载 作者:行者123 更新时间:2023-11-30 17:53:11 26 4
gpt4 key购买 nike

我正在当前目录中搜索目录,如果我跨越一个目录,我会再次搜索目录和文件,但找不到问题。我总是得到相同的结果和一些特定的目录。在代码中,我获取数组中的目录名称并打印它们。结果如下所示;

direc Num (except parent and curr) : 6

/home/sabri/Desktop/Test/Untitled Folder 3

/home/sabri/Desktop/Test/Untitled Folder 3

/home/sabri/Desktop/Test/Untitled Folder 3

/home/sabri/Desktop/Test/Untitled Folder 3

/home/sabri/Desktop/Test

/home/sabri/Desktop/Test/Untitled Folder 4

/home/sabri/Desktop/Test/Untitled Folder 4

/home/sabri/Desktop/Test/Untitled Folder 4

但我的目录是;

Untitled Folder 1

Untitled Folder 2

Untitled Folder 3

Untitled Folder 4

Untitled Folder 5
<小时/>
int listFilesIndir(char *currDir) 
{
struct dirent *direntp;
char newDir[20][250];


DIR *dirp;
int x ,y =0,i=0 ;


if ((dirp = opendir(currDir)) == NULL)
{
perror ("Failed to open directory");
return 1;
}

while ((direntp = readdir(dirp)) != NULL)
{
printf("%s\n", direntp->d_name);
if(direntp->d_type == DT_DIR)
{
y++;
chdir(direntp->d_name);
getcwd(newDir[i],250);
listNewDir(direntp->d_name);
i++;

}
}

printf("direc Num (except parent and current) : %d\n",y-2 );

for ( i = 0; i < 10; ++i)
{
printf("%s\n", newDir[i]);
}

while ((closedir(dirp) == -1) && (errno == EINTR)) ;

return 0;
}


int listNewDir(char *currDir)
{
struct dirent *direntp;
DIR *dirp;

if ((dirp = opendir(currDir)) == NULL)
{
perror ("Failed to open directory");
return 1;
}

while ((direntp = readdir(dirp)) != NULL)
printf("%s\n", direntp->d_name);

while ((closedir(dirp) == -1) && (errno == EINTR)) ;

return 0;
}

最佳答案

您需要跳过“.”和“..”条目。您也不应该执行 chdir 和 getcwd。只需将目录名称传递给 listNewDir 函数即可打印该目录中的文件。 (如果你想保存名称,你可以将名称 strcpy 到 newDir 中。)
另外,for 循环最多只能处理 10 个条目,而 newDir 只能处理 20 个条目。我认为这些仅用于测试。

关于c - 如何打印所有目录以及这些目录下的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759197/

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