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);
        }
    }
  • 相关阅读:
    如何获取汉字对应的拼音
    php each()函数和list()函数
    php list()函数
    addslashes给预定义字符前面加上反斜杠
    array_filter() 过滤数组中的空白元素
    用.htaccess文件实现URL重写
    xml中实体引用
    onsubmit阻止表单提交
    php获取当前文件绝对路径
    array_merge() 函数的用法
  • 原文地址:https://www.cnblogs.com/zendu/p/4988001.html
Copyright © 2011-2022 走看看