C语言获取目录下目录&文件列表

来源:互联网 发布:域名注册的网站名称 编辑:程序博客网 时间:2024/05/21 14:48

数据结构

struct dirent{    long d_ino;                 /* inode number 索引节点号 */    off_t d_off;                /* offset to this dirent 在目录文件中的偏移 */    unsigned short d_reclen;    /* length of this d_name 文件名长 */    unsigned char d_type;        /* the type of d_name 文件类型 */        char d_name [NAME_MAX+1];   /* file name (null-terminated) 文件名,最长255字符 */}struct __dirstream  {    void *__fd;                        /* `struct hurd_fd' pointer for descriptor.  */    char *__data;                /* Directory block.  */    int __entry_data;                /* Entry number `__data' corresponds to.  */    char *__ptr;                /* Current pointer into the block.  */    int __entry_ptr;                /* Entry number `__ptr' corresponds to.  */    size_t __allocation;        /* Space allocated for the block.  */    size_t __size;                /* Total valid data in the block.  */    __libc_lock_define (, __lock) /* Mutex lock for this structure.  */  };typedef struct __dirstream DIR;

实现

  • linux可以直接使用d_type判断是目录还是文件,win则不支持
  • linux已经定义了NAME_MAX(centos6.5为255),win则需要定义,所以”#ifndef NAME_MAX”可改成”#ifdef WIN32”
#include <dirent.h>#include <string.h>//#ifdef WIN32#ifndef NAME_MAX    #define NAME_MAX 255#endifint listDir( char dirName[], char buffer[][NAME_MAX], const int maxFileAmount, const int maxStringLength ){    DIR *dir;    struct dirent *ptr;    dir = opendir( dirName ); //open the dir    int amount = 0;    while((ptr = readdir(dir)) != NULL && amount < maxFileAmount){ //read the list of this dir        strncpy( buffer[amount], ptr->d_name, maxStringLength );        #ifdef __linux            if (ptr->d_type == 4)                strcat( buffer[amount], "/" ); //add a folder marker        #endif        ++amount;    }    closedir(dir);    return amount;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子总是挨欺负怎么办 一年级孩子爱打架怎么办 孩子没规矩家长怎么办 小朋友在幼儿园打人怎么办 幼儿园小朋友喜欢打人怎么办 三周岁宝宝爱哭怎么办 2周岁宝宝爱哭怎么办 一个月宝宝爱哭怎么办 2岁宝宝爱哭怎么办 三岁小朋友打人怎么办 一岁半小朋友喜欢打人怎么办 爷爷偏心我该怎么办 冲动型学生老师怎么办 两个宝宝争东西怎么办 2周岁宝宝打人怎么办 小孩幼儿园被打怎么办 小孩喝了润滑油怎么办 孩子被打了怎么办 宝宝吃了指甲油怎么办 孩子掉了深海怎么办 小孩打了别人怎么办 两岁宝宝爱咬人怎么办 孩子上学老打人怎么办 孩子上学爱说话怎么办 孩子抢玩具打人怎么办 生气就像打人怎么办 小孩总喜欢打人怎么办 小孩性格好翘怎么办 一岁小宝宝打人怎么办 小孩子老喜欢打人怎么办 孩子被大人欺负怎么办 小孩识字量少怎么办 父母打架孩子该怎么办 小孩嘴唇里面烂怎么办 幼儿园小朋友很调皮怎么办 幼儿园小朋友上课调皮怎么办 孩子误冲游戏怎么办 遇到别的熊孩子怎么办 幼儿园遇到熊孩子怎么办 高铁上遇到熊孩子怎么办 幼儿爱打人家长怎么办