不调用目录prwoling递归函数

时间:2013-11-15 16:25:17

标签: c file recursion directory unistd.h

我在制作递归目录列表时遇到的一个问题是,在递归函数的堆栈中没有调用目录检查后的调用。

void direct_crawl(int indent, char *cwd, STAT nstat)
{
    int i, i_in, count;
    struct direct **files;
    int file_comp();

    count = scandir(cwd, &files, file_comp, alphasort);

    for (i = 0; i < count; i++)
    {
       for (i_in = 0; i_in < indent; i_in++)
            printf("\t");
       printf("%s\n", files[i]->d_name);

       stat(files[i], nstat);

       if (S_ISDIR(nstat->st_mode) != 0)
            direct_crawl(indent + 1, files[i]->d_name, nstat)
     }

}

它上升到一个子目录,但如果这些目录有子目录,它就不会打扰......所以,有人可以解释一下我做错了吗?感谢。

1 个答案:

答案 0 :(得分:0)

你做错了的是,即使在子目录中,你只用一个文件名调用stat(),在当前目录而不是子目录中搜索,因此stat()失败。如果您在chdir(cwd)循环之后拨打chdir("..")for之后,它可能会有效。