您的位置:首页 > 运维架构 > Linux

linux_scandir()

2015-10-27 09:54 465 查看
 函数int scandir(const char *dir,struct dirent **namelist,int(*filter)(const void *b),

                       int ( * compare )( conststruct dirent **, const struct dirent ** ) );

 

(1) 头文件

#include <dirent.h>   

(2) 函数定义

int scandir(const char *dir,struct dirent**namelist,int (*filter)(const void *b),

                       int ( * compare )( conststruct dirent **, const struct dirent ** ) );

 

(3) 使用说明

函数scandir扫描dir目录下以及dir子目录下满足filter过滤模式的文件,返回的结果是compare函数经过排序的,并保存在 namelist中。注意namelist是通过malloc动态分配内存的,所以在使用时要注意释放内存。alphasort和versionsort 是使用到的两种排序的函数。  

当函数成功执行时返回找到匹配模式文件的个数,如果失败将返回-1。

 

(4) 使用示例

/*

scandir函数

*/

#include <stdio.h>

#include <dirent.h>

int customFilter(const struct dirent *pDir)

{

   if (strncmp("test", pDir->d_name, 4) == 0

           && pDir->d_type & 0x04

           && strcmp(pDir->d_name, ".")

           && strcmp(pDir->d_name, ".."))

    {

       return 1;

    }

   return 0;

}

int main()

{

   struct dirent **namelist;

   int n;

   int i;

    n= scandir(".", &namelist, customFilter, alphasort);

   if (n < 0)

    {

       perror("scandir");

    }

   else

    {

       for (i = 0; i < n; i++)

       {

           printf("%s\n", namelist[i]->d_name);

           free(namelist[i]);

       }

       free(namelist);

    }

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 函数