您的位置:首页 > 编程语言 > C语言/C++

C语言中的dirent.h说明

2015-08-17 00:48 477 查看
dirent.h是用于目录操作的头文件,linux 默认在/usr/include目录下(会自动包含其他文件),常见的方法如下:

1. opendir()

打开目录,并返回句柄

2. readdir()

读取句柄,返回dirent结构体

3. telldir()

返回当前指针的位置,表示第几个元素

4. close()

关闭句柄

不同平台下的dirent 结构体各异,如mac:

struct dirent {

ino_t d_ino; /* file number of entry */

__uint16_t d_reclen; /* length of this record */

__uint8_t d_type; /* file type, see below */

__uint8_t d_namlen; /* length of string in d_name */

char d_name[__DARWIN_MAXNAMLEN + 1]; /* name must be no longer than this */

};

其中:d_name表示文件名称, d_type表示文件类型,类型如下:

enum

{

DT_UNKNOWN = 0,

# define DT_UNKNOWN DT_UNKNOWN

DT_FIFO = 1,

# define DT_FIFO DT_FIFO

DT_CHR = 2,

# define DT_CHR DT_CHR

DT_DIR = 4,

# define DT_DIR DT_DIR

DT_BLK = 6,

# define DT_BLK DT_BLK

DT_REG = 8,

# define DT_REG DT_REG

DT_LNK = 10,

# define DT_LNK DT_LNK

DT_SOCK = 12,

# define DT_SOCK DT_SOCK

DT_WHT = 14

# define DT_WHT DT_WHT

};

范例代码如下:

/*

============================================================================

Name : hell_c.c

Author : yuancj

Version :

Copyright : Your copyright notice

Description : Hello World in C, Ansi-style

============================================================================

*/

#include <stdio.h>

#include <stddef.h>

#include <dirent.h>

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

DIR * dp;

struct dirent * dirp;

if (argc != 2) {

printf("usage: ls directory_name");

}

if ( (dp = opendir(argv[1])) == NULL) {

printf("can't open %s", argv[1]);

}

while ( (dirp = readdir(dp)) != NULL ) {

printf("name:%s-type:%d-position:%ld\n", dirp->d_name, dirp->d_type, telldir(dp));

}

closedir(dp);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: