Linux 下读取指定目录下所有的目录与文件并依字母顺序

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错
代码如下:
#include
#include

// 自定义的过滤器函数
// 本函数只能做为 scandir 函数的参数,被 scandir 函数回调
// 注:1. 本函数不能被定义为 static int custom_filter( const struct dirent *pSDirent ) 静态函数;
//   2. 参数一定要为 const struct dirent *pSDirent 不可省略前面的 const ;
int
custom_filter( const struct dirent *dp )
{
    if ( 0 == strncmp( “get”,
                       dp->d_name,
                       3 ) )
    {
        // 非零为保留 – 不滤掉
        return 1;
    }
  
    // 零为过滤掉 – 过滤掉
    return 0;
  }   
 
void main()
{
    struct dirent **namelist;
    int i;
    int total;
  
    total = scandir( “./”,
                     &namelist,
                     custom_filter,
                     alphasort );
                    
    if ( total < 0 )
    {
        printf( “scandir fault\n” );
    }
    else
    {
        for( i = 0;
             i < total;
             i++ )
        {
            printf( “%s\n”,
                    namelist[i]->d_name );
        }
      
        printf( “total = %d\n”,
                total );
    }
}

结果如下:
不加 custom_filter 过滤函数的情况
    total = scandir( “./”,
                     &namelist,
                     0,
                     alphasort );
linuxidc@linuxidc-Ubuntu:/media/TestSrc$ ./getselfname
.
..
getselfname
getselfname.c
total = 4

加了 custom_filter 过滤函数的情况
    total = scandir( “./”,
                     &namelist,
                     custom_filter,<

未经允许不得转载:演道网 » Linux 下读取指定目录下所有的目录与文件并依字母顺序

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册