Linux下opendir、readdir使用小结

1.opendir小结

#include<sys/types.h>
#include<dirent.h>

DIR *opendir(const cahr *path);

函数功能:获取path目录下所有文件和目录的列表,如果path是个文件或者失败则返回NULL

返回值(DIR)
DIR结构体的原型为:struct_dirstream

typedef struct __dirstream DIR;

struct __dirstream
{
    void *__fd;
    char *__data;
    int __entry_data;
    char *__ptr;
    int __entry_ptr;
    size_t __allocation;
    size_t __size;
    __libc_lock_define (, __lock)
};

另外注意一点是在接收对dp的使用后需要使用closedir销毁DIR结构

2.readdir小结

#include<dirent.h>

struct dirent *readdir(DIR *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<sys/types.h>
#include<dirent.h>

int main(int argc, char *argv[])
{


    DIR    *dp;
    struct dirent *dirp;

    if(argc != 2){
        printf("parameter is wrong.\n");
        return 0;
    }

    if((dp = opendir(argv[1])) == NULL)
        return 0;

    while((dirp = readdir(dp)) != NULL)
        printf("%s\n", dirp->d_name);

    closedir(dp);

    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值