资源简介
linux 目录树实现代码,使用的是递归的算法

代码片段和文件信息
/*实现一个tree命令
:操作目录文件的函数:opendir rewinddir readdir closedir
:递归函数
:操作i节点函数:stat
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUFSZ 4092
void display_tree(char *filenameint level);
int main(int argcchar **argv)
{
char filename[BUFSZ] = {0};
if(argc < 2)
{
//如果没有路径,则自动获取当前路径
getcwd(filenameBUFSZ-1);
}
else
{
//保证传入的目录是绝对路径
if(argv[1][0] == ‘/‘)
{
strcpy(filenameargv[1]);
}
else
{//如果不是绝对路径,把它转换成绝对路径
getcwd(filenameBUFSZ-1);
strcat(filename“/“);
strcat(filenameargv[1]);
}
}
//显示目录文件/逐层显示
display_tree(filename0);
return 0;
}
void display_tree(char *filenameint level)
{
struct stat st;
int reti;
char *file = NULL;
DIR *dir = NULL;
struct dirent *dent = NULL;
char tmp[BUFSZ] = {0};
if(NULL == filename)
{
return ;
}
ret = stat(filename&st);
if(-1 == ret)
{
perror(“stat“);
return ;
}
if(S_ISDIR(st.st_mode))
{//如果是目录文件
/*首先打印当前目录下,所有文件名*/
for(i = 0; i < level; i++)
{
printf(“%c“‘\t‘);
}
file = strrchr(filename‘/‘);
printf(“|--%s\n“file+1);
//打开目录文件
dir = opendir(filename);
if(NULL == dir)
{
perror(“opendir“);
return ;
}
rewinddir(dir);
while(1)
{
dent = readdir(dir);
if(NULL == dent)
{
perror(“readdir“);
return ;
}
if(!strcmp(dent->d_name“.“)||!strcmp(dent->d_name“..“))
{
continue;
}
//转换为绝对路径
strcpy(tmpfilename);
strcat(tmp“/“);
strcat(tmpdent->d_name);
display_tree(tmplevel+1); //递归调用
}
}
else
{//如果不是目录文件
//直接把文件名打印,
for(i = 0; i < level; i++)
{
printf(“|--%c“‘\t‘);
}
file = strrchr(filename‘/‘);
printf(“%s\n“file+1);
}
closedir(dir);
}
#if 0
file = strrchr(filename‘/‘);
:从字符串尾部开始查找,找第一个‘/‘字符指针的位置,并返回
/opt/sz1402/day5/opendir/1.c
#endif
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2275 2014-04-23 15:23 tree.c
----------- --------- ---------- ----- ----
2275 1
相关资源
- DevExpress之TreeList使用示例
- treeview详细使用(delphi)
- VirtualTreeview 最新版支持 XE10.3
- Hartree-Fock核基态的多体摄动理论
- Skyrme-Hartree-Fock计算11Be的晕结构
- 具有标量顶点校正的QHD中的手征Dira
- 相对论Hartree-Fock-Bogoliubov方法中的超重
- decisiontree决策树在adult数据集上的实现
- 树形下拉框控件源码 TreeView In Combo
-
Tree-ba
sed Convolutional Neural Networks - ZedBoard REV_D的BOOT.BIN、devicetree.dtb、l
- zTree树结构包,与jBox弹窗的包
- unity的FX Fire Tree
- Optimal Trajectory Generation for Dynamic Stre
- stereo matching using tree filtering
- love-tree.zip
- 故障树手册Fault Tree Handbook
- 八叉树算法
- Introduction of decision trees_J.R. Quinlan
- 决策树算法原理详解
- classificationandregressiontrees(1).pdf
- 建立3D点的KD树,速度很快
- Harry Van Trees《检测、估计和调制理论
- Algorithms on Strings Trees and Sequences pdf
- 使用zTree框架完成树形框架链接到数据
- Algorithms on Strings Trees and Sequences 高清
- dtree+ajax异步加载树
- Analysis of Phylogenetics and Evolution with R
- R-TREE的实现及应用
- js树形菜单大集合(几十种demo)
评论
共有 条评论