c - 遍历C中的目录

标签 c unix posix dir

我正在尝试遍历给定路径的目录,但以下程序不会进入目录内部并陷入无限循环。这段代码有什么问题:

void func(char path[]);
int main(int argc, char *argv)
{
    char buf[255];
    getcwd(buf,255);
    func(buf);
}

void func(char path[])
{
    DIR *dirp;
    struct stat states;
    struct dirent *direntp;

    dirp=opendir(path);
    chdir(path);

    while((direntp=readdir(dirp))!=NULL)
    {
        if(S_ISDIR(states.st_mode))//true than returns zero
        {
            printf("%s\n",direntp->d_name);
        }
    else
        if(!(strcmp(direntp->d_name,".")||strcmp(direntp->d_name,"..")))// if true retrns zero
        {   
            continue;
        }
        else
        {
            func(direntp->d_name);
            chdir("..");
        }
    }
}

最佳答案

您可能缺少一些代码,或者问题是您从未填充/更新状态

再看看这一行:

if(!(strcmp(direntp->d_name,".")||strcmp(direntp->d_name,"..")))

它永远不会计算为真值,因为这需要 direntp->d_name 等于 ...同时(这根本不可能)。我猜您想在此处检查 && ,只有在您的目录名称与任一值匹配的情况下,它才会进入分支。

关于c - 遍历C中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13855932/

相关文章:

c - 如何在 C 中构建静态功能测试?

c++ - 使来自线程的数据流对所有其他线程可读

c - 尽管 fclose(),fprintf 仍不写入文件

C - For 循环仅针对我修改的数组运行一次

c - 为什么 yytext 会跳过 YACC 中的第一个输入?

有人可以告诉我使用 fork() 系统调用的程序有什么问题吗(编程 C)

c++ - 将结构从 C 转换为 C++ (POD)

python - Q : python (using cutadapt in bash script on cluster): libpython3. 7m.so.1.0:无法打开共享对象文件:没有这样的文件或目录

c - 当为 stdout 打开非阻塞 I/O 时,操作系统也为 stdin 打开它是否正确?

c - 读入未初始化的内存空间总是不明智的吗?