转载于:http://blog.csdn.net/lin_fs/article/details/7335573

1. opendir()

头文件

  #include<sys/types.h>

 

  #include<dirent.h>

函数原型

  DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)

功能

  打开一个目录,在失败的时候返回一个空的指针。

返回值(DIR)

DIR 结构体的原型为:struct_dirstream

Linux系统中:

typedef struct __dirstream DIR;

       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.   */
        };

2.readdir

头文件

#include<dirent.h>

函数原型

struct dirent* readdir(DIR* dir_handle); (个人理解循环读取dir_handle,目录和文件都读)

功能

读取opendir 返回值的那个列表

返回值

返回dirent结构体指针,dirent结构体成员如下,(文件和目录都行)

 

  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字符 */

 

  }

3.用例

代码

#include<stdio.h> #include<dirent.h>

int main(void) {         DIR *dirptr=NULL;         int i=1;         struct dirent *entry;         if((dirptr = opendir("test.dir"))==NULL)         {         printf("opendir failed!");         return 1;         }         else         {         while(entry=readdir(dirptr))         {         printf("filename%d=%s\n",i,entry->d_name);         i++;         }         closedir(dirptr);         }         return 0; }

输出:

filename1=dir1 filename2=file3 filename3=.. filename4=dir3 filename5=. filename6=file1 filename7=file2 filename8=dir2

opendir 、readdir 小结的更多相关文章

  1. 004PHP文件处理——目录操作:glob rewinddir opendir readdir

    <?php /** * 目录操作:glob rewinddir opendir readdir */ //glob 以数组形式返回,参数1这个目录的所有内容,可以置顶返回的具体类型 //只遍历输 ...

  2. php 中 opendir() readdir() scandir()

    opendir(path,context)若成功,则该函数返回一个目录流,否则返回 false 以及一个 error.可以通过在函数名前加上 “@” 来隐藏 error 的输出. readdir() ...

  3. 利用目录函数(opendir,readdir,closedir)查找文件个数

    如何知道一个目录下的所有文件个数呢?或许可以用tree来学(zhuang)习(bi)的同时知道文件个数.Linux系统io函数为我们提供了目录操作函数,其中有一个比较重要(实际上有三个,因为它们经常配 ...

  4. 关于目录的操作|*|<>|opendir |readdir|unlink|find2perl|rename|readlink|oct()|utime

    #!/usr/bin/perl use strict; use warnings; foreach my $arg(@ARGV) { print "one is $arg\n"; ...

  5. GlusterFS常用命令小结

    # /etc/init.d/glusterd start # /etc/init.d/glusterd stop # /etc/init.d/glusterd status 2.       开机自动 ...

  6. 20155325 加分作业 实现pwd

    要求 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 准备 思路 问题 1.如何获取当前目录的节点号 Linux ...

  7. 源码编译安装php

    原文:https://klionsec.github.io/2017/11/23/phpsec/#menu After compile install php 5.3.1, I can not fin ...

  8. php中防止SQL注入的方法

    [一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最 ...

  9. php.ini 安全配置

    (1) 打开php的安全模式 php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/ ...

随机推荐

  1. 解决Spring AOP Controller 不生效

    在spring-mvc.xml文件中,进行以下配置,就可以实现在Controller中, 方法一:最简单的,在spring-mvc.xml配置文件中,添加以下语句 spring-mvc.xml < ...

  2. asmlinkage的用法

    转自:https://www.cnblogs.com/china_blue/archive/2010/01/15/1648523.html https://blog.csdn.net/liujiaoy ...

  3. 函数柯里化与偏函数+bind

    简单理解: 1,函数柯里化就是把多参数函数分解为多return的单参数函数: 举个例子(伪代码): function func (a, b, c){ return } 柯里化为 function fu ...

  4. ZR#712

    消灭砖块 题意: 很多块砖分布在一个 $ m \times m $ 的矩阵中,他可以消掉以他为左上角顶点的一个 $ n \times n $ 的矩阵里的所有砖块.计算可以消掉最多的砖块数(只能消一次) ...

  5. 预处理、const、static与sizeof-用宏定义得到一个字的高位和低位字节

    1:代码如下: #define WORD_LO(XXX) ((byte) (word)(XXX) & 255) #define WORD_HI(XXX) ((byte) (word)(XXX) ...

  6. mybatis集成spring

    1.为什么mybatis要去集成spring?===>简单来说就是为了让spring 来帮我们管理事务!!如果没有spring去帮助管理事务,那么需要我们自己去手动去维护事务,例如:发生异常需要 ...

  7. IDEA 运行单元测试报错 @{argLine}

    sentinel是今年阿里开源的高可用防护的流量管理框架. git地址:https://github.com/alibaba/Sentinel wiki:https://github.com/alib ...

  8. mysql的启动问题

    用cmd启动MySQL   (net start mysql )时出现(发生系统错误 5.  拒绝访问)这样的错误是因为cmd 权限太低了需要提高cmd权限才行(即使管理员权限) 如下图cmd所示: ...

  9. goland 可用注册码(license)

    N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjoid3UgYW5qdW4iLCJhc3NpZ25lZU5hbWUiO ...

  10. ios-tableViewcell展开与收缩动画处理

    [前言] 在使用华尔街见闻 app 时,看到它的 tableVeiw 上的 cell 具有很好的展开与收缩功能.于是自己想了一下实现,感觉应该挺简单的,于是心痒痒写个 demo 实现一波.华尔街见闻 ...