#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <string.h>
void printall(const char *path, int max){
DIR *dir = opendir(path); //产生DIR的指针
if (dir == NULL){
return ;
}
struct dirent *dirent; //系统默认含有的结构体体
int t = 1;
while(dirent = readdir(dir)){
if (!strcmp(dirent->d_name,".")||!strcmp(dirent->d_name,"..")){ //遇到. 和 .. 是跳过
continue;
}
for (t = 1; t < max; ++t){
printf("--");
}
if(dirent->d_type == 4){
printf("[%s]\n",dirent->d_name);
char tmp[100] = {0};
sprintf(tmp,"%s/%s",path,dirent->d_name); // 需要进行地址的拼接,否则不能正确往下执行
printall(tmp,max + 1);
}
printf("%s\n",dirent->d_name);
}
}
int main(void)
{
printall("../../",1);
return 0;
}

本文介绍了一段使用C语言实现的函数,该函数能够递归地遍历指定目录,并打印出所有子目录及文件的名称。通过使用`readdir()`函数和`opendir()`函数来获取目录信息,同时利用递归调用实现深度优先搜索目录结构。代码中还包含了对.和..目录的跳过处理,确保只输出有效文件名。

被折叠的 条评论
为什么被折叠?



