gpt4 book ai didi

c - 在目录树中搜索文件

转载 作者:行者123 更新时间:2023-11-30 20:38:20 24 4
gpt4 key购买 nike

您好,我需要一些帮助来制作一个在目录中查找文件的 C 程序。它将目录和文件名作为参数,并使用 stat 来获取文件的属性。我希望输出显示找到的文件的路径以及其中包含该文件名的任何其他路径。

我已经研究了 dirent.h 来访问该目录,但我不太确定如何正确使用它来查找其中的文件。

最佳答案

char  *FINDME=NULL;

int filter (const struct dirent *p)
{
int retval=0;
if (fnmatch(FINDME,p->d_name, 0)==0)
retval=1;
return retval;
}
// scandir.c
// scan the current directory "."
// usage ./scandir filename
// usage ./scandir 'filename*'
int
main(int argc, char **argv)
{
struct dirent **namelist;
int n=0;
FINDME=(argc>1)? argv[1] : "testfilename";
n = scandir(".", &namelist, filter, alphasort);
if (n < 0)
{
perror("scandir");
exit(1);
}

while (n--)
{
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
}
free(namelist);

}

您必须包含 fnmatch.hdirent.h 以及常用的头文件。fnmatch() 允许使用 * 等“通配符”来选择文件名。alphasort() 按字母顺序对名称进行排序,是 POSIX 系统的一部分。FNDME 是一个全局字符串,因为回调函数过滤器不接受任何指向直接结构的指针。

关于c - 在目录树中搜索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29417961/

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