gpt4 book ai didi

C 程序文件/文件夹递归搜索

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

我的程序仅循环浏览 1 个文件夹深度。当我运行它时,程序输出文件夹 1 文件夹深度的名称,而不是输入它并列出其文件。

void getFilesInDirectory(char *loc){
struct dirent *dirp;
DIR *rec;
struct stat f_info;
char full[PATH_MAX + 1];

rec = opendir(loc);
while ((dirp = readdir(rec)) != NULL)
{
if(strcmp(dirp->d_name,".") != 0 && strcmp(dirp->d_name,"..") != 0){
stat(dirp->d_name, &f_info);
_fullpath(full, dirp->d_name, PATH_MAX);

if(S_ISDIR(f_info.st_mode)){
getFilesInDirectory(full);
}else{
printf("%s\n", dirp->d_name);
}
}
}
close(rec);
}

输出:

file1.txt
file2.txt
folder1
folder2

文件夹1和文件夹2内分别是file3.txt和file4.txt,但程序没有列出它们。所以我的输出应该是

file1.txt
file2.txt
file3.txt
file4.txt

递归停止 1 个文件夹深度是否有原因

最佳答案

问题是您使用错误的文件名调用 stat()。您需要向它传递完整的文件名 - 它不知道您正在查看“loc”目录中的文件。

sprintf(full,"%s/%s",loc,dirp->d_name);
stat(full, &f_info);

我也看不到你的 _fullpath 函数如何工作,因为你没有将它传递给本地

关于C 程序文件/文件夹递归搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488758/

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