源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C/C++获取目录下的文件列表信息

  • 时间:2020-12-23 14:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C/C++获取目录下的文件列表信息
1.数据结构
[u]复制代码[/u] 代码如下:
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;
2.程序示例 其中程序中win不支持文件类型(d_type),可以根据文件名称后缀来判断文件类型;linux可以直接使用d_type判断是目录还是文件。
[u]复制代码[/u] 代码如下:
#include <sys/types.h> #include <dirent.h> #include <unistd.h> #include <stdio.h> int main(){     DIR    *dir;     struct    dirent    *ptr;     dir = opendir("."); ///open the dir     while((ptr = readdir(dir)) != NULL) ///read the list of this dir     {         #ifdef _WIN32             printf("d_name: %s\n", ptr->d_name);         #endif         #ifdef __linux             printf("d_type:%d d_name: %s\n", ptr->d_type,ptr->d_name);         #endif     }     closedir(dir);     return 0; }
程序输出: [img]http://files.jb51.net/file_images/article/201402/20140227100543.jpg?201412710648[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部