博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笔记:递归列出目录中的文件列表
阅读量:7031 次
发布时间:2019-06-28

本文共 1063 字,大约阅读时间需要 3 分钟。

hot3.png

#include 
#include 
#include 
#include 
#include 
#include 
#define MAX_PATH 1024void dirwalk(char * dir, void (*fcn)(char *)){ char name[MAX_PATH]; struct dirent * dp; DIR * dfd; if((dfd=opendir(dir))==NULL) { fprintf(stderr, "dirwalk: can't open %s\n", dir); return; } while((dp=readdir(dfd))!=NULL) { if(strcmp(dp->d_name, "..") || strcmp(dp->d_name, ".")==0) continue; if(strlen(dir)+strlen(dp->d_name)+2>sizeof(name)) fprintf(stderr, "dirwalk: name %s %s too long\n", dir, dp->d_name); else { sprintf(name, "%s%s", dir, dp->d_name); (*fcn)(name); } } closedir(dfd);}void fsize(char * name){ struct stat stbuf; if(stat(name, &stbuf)==-1) { fprintf(stderr, "fsize: can't access %s\n", name); return; } if((stbuf.st_mode & S_IFMT)==S_IFDIR) dirwalk(name, fsize); printf("%8ld %s\n", stbuf.st_size, name);}int main(int argc, char ** argv){ if(argc==1) fsize("."); else while(--argc>0) fsize(*++argv); return 0;}

转载于:https://my.oschina.net/lovewxm/blog/215267

你可能感兴趣的文章
工厂方法模式
查看>>
360安全卫士怎么登录问题
查看>>
linux下的DNS缓存服务
查看>>
实现一键分享的代码
查看>>
详解Linux运维工程师必备技能
查看>>
[20181109]12c sqlplus rowprefetch参数5
查看>>
bupt summer training for 16 #1 ——简单题目
查看>>
【Udacity】朴素贝叶斯
查看>>
shader 讲解的第二天 把兰伯特模型改成半兰泊特模型 函数图形绘制工具
查看>>
python3.5安装Numpy、mayploylib、opencv等额外库
查看>>
优雅绝妙的Javascript跨域问题解决方案
查看>>
Java 接口技术 Interface
查看>>
函数草稿
查看>>
织梦系统学习:文章页当前位置的写法(自认对SEO有用)
查看>>
PHP经验——PHPDoc PHP注释的标准文档(翻译自Wiki)
查看>>
vue input输入框长度限制
查看>>
深入理解Java虚拟机(类加载机制)
查看>>
在500jsp错误页面获取错误信息
查看>>
iOS-CALayer遮罩效果
查看>>
为什么需要版本管理
查看>>