linux嵌套判断目录及子目录是否为空目录

本文提供了一个C语言实现的函数IsEmptyDir,用于判断指定的目录及其所有子目录是否为空。通过opendir、readdir遍历目录,递归检查每个子目录,并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 linux下如果目录为空目录,则只有.和.. 这两个也是属于目录类型的
本代码使用递归来判断目录及其子目录是否为空目录

  1. /*判断目录是否为空目录*/
  2. int IsEmptyDir(char *pszDir)
  3. {
  4.     DIR *pstDirp = NULL;
  5.     struct dirent *pstDirStru = NULL;
  6.     int ulFileNum = 0;
  7.     int ret = 1;
  8.     char szDir[100];
  9.     
  10.     memset(szDir, 0, 100);
  11.     
  12.     pstDirp = opendir(pszDir);
  13.     if (NULL == pstDirp)
  14.     {
  15.         printf("open dir error/n");
  16.         return 0;
  17.     }
  18.     while (pstDirStru = readdir(pstDirp))
  19.     {
  20.         strcpy(szDir, pszDir);
  21.         if (DT_DIR == pstDirStru->d_type)
  22.         {
  23.             if (strcmp(pstDirStru->d_name,".") && strcmp(pstDirStru->d_name,".."))
  24.             {
  25.                 ret = 0;
  26.                 memset(szDir, 0, 100);
  27.                 sprintf(szDir, "%s/%s", pszDir, pstDirStru->d_name);
  28.                 IsEmptyDir(szDir);
  29.             }
  30.         }
  31.         else
  32.         {
  33.             ret = 0;
  34.         }
  35.     }
  36.     closedir(pstDirp);
  37.     if (ret == 1)
  38.     {
  39.         printf("%s is empty dir/n", szDir);
  40.     }
  41.     else
  42.     {
  43.         printf("%s is not empty dir/n", szDir);
  44.     }
  45.     return ret;
  46. }
经自己在dedora9下测试通过,希望代码能对大家有点帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值