linux中的读目录,在linux中读取目录内容

我们如何在

Linux中使用C语言读取目录的内容(子目录和文件名).

这是一个递归程序,以递归方式打印所有子目录和文件的名称.

用法:./ a.out路径名

不检查作为命令行参数提供的初始路径名的错误条件.

基本代码流程:

读取当前目录中的所有条目.

如果是目录名,则将其名称添加到路径名中,并以递归方式调用函数.

否则打印文件的名称.

有关特定函数的详细信息可以在dmuir指出的各个手册页中引用:

#include

#include

#include

#include

int read(char *pth)

{

char path[1000];

strcpy(path,pth);

DIR *dp;

struct dirent *files;

/*structure for storing inode numbers and files in dir

struct dirent

{

ino_t d_ino;

char d_name[NAME_MAX+1]

}

*/

if((dp=opendir(path))==NULL)

perror("dir\n");

char newp[1000];

struct stat buf;

while((files=readdir(dp))!=NULL)

{

if(!strcmp(files->d_name,".") || !strcmp(files->d_name,".."))

continue;

strcpy(newp,path);

strcat(newp,"/");

strcat(newp,files->d_name);

printf("%s\n",newp);

//stat function return a structure of information about the file

if(stat(newp,&buf)==-1)

perror("stat");

if(S_ISDIR(buf.st_mode))// if directory, then add a "/" to current path

{

strcat(path,"/");

strcat(path,files->d_name);

read(path);

strcpy(path,pth);

}

}

}

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

{

read(argv[1]);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值