我正在编写代码以使用深度优先
算法遍历目录。问题是程序没有显示任何内容,并给出了 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/