linux下的普通文件的递归统计

代码如下
  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<sys/types.h>
  4 #include<dirent.h>
  5 int getFileNum(char *root){//得到文件的数量 传入一个字符串
  6         DIR* dir=NULL;//初始化目录
  7         int total=0;//初始化计数器
  8         dir=opendir(root);//打开目录下的文件
  9         if(dir==NULL){//目录为空
 10         perror("Open");//打印出错误信息
 11         exit(1);//退出程序
 12         }
 13         struct dirent *ptr=NULL;//定义一个结构体指针
 14         char path[1024]={0};//初始化路径
 15         while((ptr=(readdir(dir)))!=NULL){//遍历当前的目录
 16         //过滤掉一些不和逻辑的
 17         if(strcmp(ptr->d_name,".")==0||strcmp(ptr->d_name,"..")==0){
 18         continue;//继续
 19         }
 20         if(ptr->d_type==DT_DIR){
 21         //递归读目录
 22         //拼路径
 23         sprintf(path,"%s/%s",root,ptr->d_name);
 24         total+=getFileNum(path);//计算总和
 25         }
 26         //如果是普通文件的话
 27         if(ptr->d_type==DT_REG){
 28         total++;//计数器加一
 29         }
 30         }
 31         closedir(dir);//关闭目录
 32         return total;
 33 }
 34 
 35 int main(){
 36         int total= getFileNum("heh");//得到总数
 37         printf("The number is %d",total);
 38 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值