zoukankan      html  css  js  c++  java
  • linux C++ scandir 的使用

    (1) 头文件
    #include <dirent.h> 
    (2) 函数定义
    int scandir(const char *dir,struct dirent **namelist,int (*filter)(const void *b),
                           int ( * compare )( const struct dirent **, const struct dirent ** ) );
    int alphasort(const void *a, const void *b);
    int versionsort(const void *a, const void *b);
    
    (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
    ", namelist[i]->d_name);
                free(namelist[i]);
            }
            free(namelist);
        }
    }
  • 相关阅读:
    模块(相当于Java里的包)
    if_else_while_for
    用户交互
    Python入门
    BigInteger类及方法应用
    selenium+java破解极验滑动验证码的示例代码
    Postman 使用详解
    Postman用法简介
    伟大架构师的秘密【转载】
    深入理解HTTP协议(转)
  • 原文地址:https://www.cnblogs.com/zendu/p/4988001.html
Copyright © 2011-2022 走看看