请输入您要查询的百科知识:

 

词条 readdir
释义

语法: struct dirent* readdir(DIR* dir_handle);

返回值: dirent的结构类型

函数种类: 文件存取

内容说明 本函数用来读取目录。返回是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字符 */

}

readdir相当于文件操作函数read,DIR结构体相当于文件操作里面的FILE结构体。

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

};

typedef struct __dirstream DIR;

现在似乎被封装了,无法再头文件中找到了。

例子:

用c语言来简单实现linux下ls的功能代码如下:

#include"unistd.h"

#include"sys/types.h"

#include"fcntl.h"

#include"dirent.h"

#include"stdio.h"

#ifndef NULL

#define NULL 0

#endif

#ifndef ERROR

#define ERROR 0

#define OK 1

#endif

typedef int Status;

Status ls(char *);

int main(int argc,char **argv)

{

if(argc==1) ls(".");

else

while(--argc)

{

printf("%s\",*++argv);

ls(*argv);

}

}

Status ls(char *dirname)

{

DIR *p_dir;

struct dirent *p_dirent;

if((p_dir=opendir(dirname))==NULL)

{

fprintf(stderr,"---->can\\'t open %s\",dirname);

return ERROR;

}

while((p_dirent=readdir(p_dir)))

{

printf("%s\",p_dirent->d_name);

}

return OK;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 12:13:10