c - 深度优先目录遍历导致C中的段错误

标签 c unix directory depth-first-search

我正在编写代码以使用深度优先 算法遍历目录。问题是程序没有显示任何内容,并给出了 Segmentation Fault error。我试图调试它,但它毫无值(value),因为我仍在学习东西。所以现在我需要专家的帮助。这是代码:

void func(char path[]);

int main(int argc, char *argv) {
    char buf[255];

    scanf("%s",buf);
    func(buf);
    return 0;
}

void func(char path[]) {
    DIR *dirp;
    struct stat states;
    struct dirent *direntp;
    printf("Inside\n");
    dirp=opendir(path);
    stat(path, &states);

    while ((direntp=readdir(dirp)) != NULL) {
        if (S_ISDIR(states.st_mode)) {
            printf("Calling Func\n");
            func(direntp->d_name);
            chdir("..");
        } else if (!S_ISDIR(states.st_mode)) {
            printf("  %s\n", direntp->d_name);
        } else if (!strcmp(direntp->d_name, ".") || !strcmp(direntp->d_name, "..")) {
            continue;
        }
    }
    return ;
}

最佳答案

在 func 里面,在 while 前面,放:

dirp=opendir (path);
if (!dirp)
  return;

顺便说一下,它的 int main (int argc, char *argv[])

关于c - 深度优先目录遍历导致C中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893524/

相关文章:

c - C中具有不同数据类型的键值

c - 分配给指针

来自 php unix 时间戳的 javascript 日期

linux - 如果没有订阅者,udp 多播是否会在网络上放置任何内容?

Python:将目录结构树表示为列表的列表

linux汇编语言创建目录

c - 为什么在运行单独文件中定义的函数指针后结构实例中的变量会发生变化

c - 在c中如何判断一个char是否是一个数字?

c - 目录遍历c

java - Apache 目录工作室 “Failed to load JNI shared library”