Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1335847
  • 博文数量: 177
  • 博客积分: 3640
  • 博客等级: 中校
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 16:51
文章分类

全部博文(177)

文章存档

2014年(1)

2013年(10)

2012年(3)

2011年(163)

分类: LINUX

2011-09-30 12:31:10

C语言遍历linux文件目录
2010-04-23 17:34

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); //关闭目录 
}

阅读(1736) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~