资源简介
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
相关资源
- 以文件方式保存和恢复treeview(7KB)
- TreeView加载省市数据库
- 基于KDtree的三维点云算法
- QT的QTreeWidget有checkbox时轻松选中
- segment--tree
- TreeView和ListView控件联动事例
- 资源管理器
- 获取外部程序TreeView或ListView的值
- ztree的使用
- DerivaGem 金融软件
- VC Ctreectrl树节点后面添加图标
- Tree和ListCtrl的完美结合
- 层次遍历多元树在文件tree.cpp中3个空
- 树形控件的使用,消息的响应。
- Tableau openstreet地图包
- 24to8Colors.zip
-
实现读取xm
l文件并在treeview上显示并 - CLOSET+ 算法简论
- 最小生成树问题报告
- 虚幻4简单AI的实现:自动寻路,场景
- r-tree入门简单介绍
- unity树状图插件TreeView
- CTreeCtrl 自绘
- 定义一个Tree树类,有成员ages树龄,成
- zTree-zTree_v3-各种tree的使用大全(带搜
- QTreeView实现节点拖动.zip
- Machine learning DecisionTree
- CtreeCtrl checkbox 显示隐藏
- CTreeCtrl 树型控件 自绘
- 改变树控件背景颜色的VC源代码
评论
共有 条评论