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;
}
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;
}
相关文章推荐
- poj3984广搜c语言
- 关于 c#调用c++ 出现异常System.StackOverflowException 的问题
- C,C++宏中#与##的讲解
- C语言基础学习——第2天(语句)
- Vanya and Books
- C++编译和链接过程的详解
- c++中几种0值的比较问题
- C++对象模型——new 和 delete 运算符(第六章)
- C/C++编译链接过程详解
- 归并排序的C++实现
- c语言中对字符串进行处理的函数
- C语言中二级指针的用处
- VS2010 C++编译报错LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 冈萨雷斯数字图像处理中科院&电子科大halcon/C++/Opencv视频教程下载
- 函数指针C++和回调函数
- [LeetCode] Gas Station
- C++标准库介绍
- 快速傅里叶算法 C语言实现
- C++命名空间
- c++primer之try语句块和异常处理