gpt4 book ai didi

c - 如何修复 "recursively print subdirectories in c"

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:25 25 4
gpt4 key购买 nike

<分区>

我的当前目录中有以下文件/目录。 test_folder1 是一个目录,该目录下还有一个目录。我的 C 代码应该递归地打印当前目录中的所有文件/目录。但是,它只打印当前目录和下一级子目录,不会超出此范围。请帮忙。


当前目录:

a.out    at.c     dt    dt.c    main.c    README    test.c    test_folder1.

test_folder1 的子目录:

ahmet.txt  mehmet.txt  test_folder2.

test_folder2 的子目录:

mahmut.txt

这是 mac 终端的 C 代码。

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <limits.h>

void depthFirst(DIR *dir){
struct dirent *sd;
char path[PATH_MAX];

if(dir == NULL){
printf("Error, unable to open\n");
exit(1);
}

while( (sd = readdir(dir)) != NULL){
if(strcmp(sd->d_name, ".") != 0 && strcmp(sd->d_name, "..") != 0){
printf("%s\n", sd->d_name);
realpath(sd->d_name,path);

if(isdirectory(path)){
depthFirst(opendir(sd->d_name));
}
}
}
}

int isdirectory(char *path) {
struct stat statbuf;
if (stat(path, &statbuf) == -1)
return 0;
else
return S_ISDIR(statbuf.st_mode);
}

int main(int argc, char *argv[]){
if(argc<2){
printf("No arguments");
DIR *dir;
dir = opendir(".");
depthFirst(dir);
closedir(dir);
}

这是输出

README
main.c
test.c
test_folder1
ahmet.txt
mehmet.txt
test_folder2
a.out
at.c
dt
dt.c

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com