linux目录统计编程,linux系统编程----统计一个目录下的普通文件个数

主要是为了统计linux系统下一个指定目录下面的普通文件个数,运用目录操作的一些函数,配合递归调用来实现该功能。

首先介绍一下函数原型:

打开一个空目录

DIR *opendir(const char *name);

参数: 目录名

返回值: 指向目录的指针

读目录

struct dirent *readdir(DIR *dirp);

参数: opendir的返回值

返回值: 指向目录的指针

关闭目录

int closedir(DIR *dirp);

代码实现:readfileNum.c

1 #include

2 #include

3 #include

4 #include

5 #include

6

7

8 int get_file_num(char*root)9 {10 int total = 0;11 DIR* dir =NULL;12 //打开目录

13 dir =opendir(root);14 //循环从目录中读文件

15

16 char path[1024];17 //定义记录目录指针

18 struct dirent* ptr =NULL;19 while( (ptr = readdir(dir)) !=NULL)20 {21 //跳过. 和 ..

22 if(strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0)23 {24 continue;25 }26 //判断是不是目录

27 if(ptr->d_type ==DT_DIR)28 {29 sprintf(path, "%s/%s", root, ptr->d_name);30 //递归读目录

31 total +=get_file_num(path);32 }33 //如果是普通文件

34 if(ptr->d_type ==DT_REG)35 {36 total ++;37 }38 }39 closedir(dir);40 returntotal;41 }42

43 int main(int argc, char*argv[])44 {45 if(argc < 2)46 {47 printf("./a.out path");48 exit(1);49 }50

51 int total = get_file_num(argv[1]);52 printf("%s has regfile number: %d\n", argv[1], total);53 return 0;54 }

效果展示:

9b21043723a72867954e759721d740d4.png

原文:http://www.cnblogs.com/liunianshiwei/p/6045395.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值