红联Linux门户
Linux帮助

Linux下C语言遍历文件夹

发布时间:2007-10-22 00:22:47来源:红联作者:compat
学习了LINUX下用C语言遍历文件夹,一些心得

struct dirent中的几个成员:

d_type:4表示为目录,8表示为文件

d_reclen:16表示子目录或文件,24表示非子目录

d_name:目录或文件的名称

具体代码如下,仅供参考
#include
#include
#include

void List(char *path)
{
struct dirent* ent = NULL;
DIR *pDir;
pDir=opendir(path);
while (NULL != (ent=readdir(pDir)))
{
if (ent->d_reclen==24)
{
if (ent->d_type==8)
printf("%s\n", ent->d_name);
else
{
printf("子目录:%s\n",ent->d_name);
List(ent->d_name);
printf("返回%s\n",ent->d_name);
}
}
}
}

int main(int argc, char *argv[])
{
List(argv[1]);
return 0;
}
文章评论

共有 1 条评论

  1. gxf 于 2007-10-22 22:27:51发表:

    好像有点问题,我运行的时候结果不太对。

    递归调用部分不知道有没有问题。我觉得用树的遍历搜索访问

    目录及子目录比较好,理解起来也比较容易

    [ 本帖最后由 gxf 于 2007-10-23 08:18 编辑 ]