分类: LINUX
2011-09-30 12:31:10
LINUX下历遍目录的方法一般是这样的
打开目录-》读取-》关闭目录
相关函数是
opendir -> readdir -> closedir
#include
DIR *opendir(const char *dirname);
#include
struct dirent *readdir(DIR *dirp);
#include
int closedir(DIR *dirp);
opendir用于打开目录,返回一个指向DIR结构体的指针,他的参数*dirname是一个字符数组或者字符串常量readdir函数用于读取目录,他只有一个参数,这个参数是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 */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
随便写的一个简单的实例程序,便于理解
#include
#include
#include
int main()
{
char *path = "/root";
DIR *dp; //定义目录指针,就像定义文件指针一样
struct dirent *fmsg; //定义保存文件信息的一个指针
if(NULL == (dp = opendir(path))) //打开一个目录,同理和打开一个文件一样理解
{
perror("opendir");
exit (1);
}
while(NULL != (fmsg = readdir(dp))) //取得目录中的文件信息,包括文件夹
printf("the file name is %s\n",fmsg->d_name);
closedir(dp); //关闭目录
}