成都市炜之峰科技有限公司是一家专业嵌入式系统开发、单片机开发、电子电路设计、开发和销售的高科技企业。产品主要应用在安防、工业控制、医疗电子、机械电子、消费性电子、电力电子以及家电控制方面,我们有丰富的开发经验,为客户提供低廉的成本、高性能的产品设计方案。公司拥有一批的高素质研发,凭着多年的经验、优秀的品质、具有竞争力的价格、准时快捷的交货期,赢的广大客户的肯定。欢迎来电咨询,联系方式:QQ:2117735231, 电话:18040300267,18227649137 网址:www.wzfhost.com

C语言 获取指定目录下的文件列表

上一篇 / 下一篇  2017-03-05 10:14:32 / 个人分类:C语言

  1. //获取指定目录下的所有文件列表
  2. char** getFileNameArray(const char *path, int* fileCount)  
  3. {  
  4.     int count = 0;  
  5.     char **fileNameList = NULL;  
  6.     struct dirent* ent = NULL;  
  7.     DIR *pDir;  
  8.     char dir[512];  
  9.     struct stat statbuf;  
  10.   
  11. //打开目录  
  12.     if ((pDir = opendir(path)) == NULL)  
  13.     {  
  14.         myLog("Cannot open directory:%s\n", path);  
  15.         return NULL;  
  16.     }  
  17. //读取目录  
  18.     while ((ent = readdir(pDir)) != NULL)  
  19.     { //统计当前文件夹下有多少文件(不包括文件夹)  
  20. //得到读取文件的绝对路径名  
  21.         snprintf(dir, 512, "%s/%s", path, ent->d_name);  
  22.         //得到文件信息  
  23.         lstat(dir, &statbuf);  
  24.         //判断是目录还是文件  
  25.         if (!S_ISDIR(statbuf.st_mode))  
  26.         {  
  27.             count++;  
  28.         }  
  29.     } //while  
  30. //关闭目录  
  31.     closedir(pDir);  
  32. //  myLog("共%d个文件\n", count);  
  33.   
  34. //开辟字符指针数组,用于下一步的开辟容纳文件名字符串的空间  
  35.     if ((fileNameList = (char**) myMalloc(sizeof(char*) * count)) == NULL)  
  36.     {  
  37.         myLog("Malloc heap failed!\n");  
  38.         return NULL;  
  39.     }  
  40.   
  41. //打开目录  
  42.     if ((pDir = opendir(path)) == NULL)  
  43.     {  
  44.         myLog("Cannot open directory:%s\n", path);  
  45.         return NULL;  
  46.     }  
  47. //读取目录  
  48.     int i;  
  49.     for (i = 0; (ent = readdir(pDir)) != NULL && i < count;)  
  50.     {  
  51.         if (strlen(ent->d_name) <= 0)  
  52.         {  
  53.             continue;  
  54.         }  
  55.         //得到读取文件的绝对路径名  
  56.         snprintf(dir, 512, "%s/%s", path, ent->d_name);  
  57.         //得到文件信息  
  58.         lstat(dir, &statbuf);  
  59.         //判断是目录还是文件  
  60.         if (!S_ISDIR(statbuf.st_mode))  
  61.         {  
  62.             if ((fileNameList[i] = (char*) myMalloc(strlen(ent->d_name) + 1))  
  63.                     == NULL)  
  64.             {  
  65.                 myLog("Malloc heap failed!\n");  
  66.                 return NULL;  
  67.             }  
  68.             memset(fileNameList[i], 0, strlen(ent->d_name) + 1);  
  69.             strcpy(fileNameList[i], ent->d_name);  
  70.             myLog("第%d个文件:%s\n", i, ent->d_name);  
  71.             i++;  
  72.         }  
  73.     } //for  
  74. //关闭目录  
  75.     closedir(pDir);  
  76.   
  77.     *fileCount = count;  
  78.     return fileNameList;  

  79. 转自:http://blog.csdn.net/wangchangshuai0010/article/details/17454581

TAG: C文件操作

lmchzz的个人空间 引用 删除 lmchzz   /   2017-03-21 12:22:14
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar