Linux C 遍历文件--opendir()、readdir()...上

首先感谢网上的分享者,是你们让我们站在巨人的肩膀上前行。
linux遍历文件,网上搜索一下,自己只是整理了一下,写点观后感,敲敲代码。

一、套路
1、DIR * opendir(路径):首先给出你想要的路径,路径为字符串,opendir回返回一个DIR *,这个在下一步中使用。
2、利用struct dirent * readdir(DIR *):将上一步得到的DIR放入到形参中,会得到一个struct dirent。
3、遍历…
其实思路不算难,三招剑法而已。接下来我们开始解析它。

二、这都是啥
1、opendir函数:
功能
打开一个目录,在失败的时候返回一个空的指针。
头文件:想在程序里用这个函数就必须包含它们
#include

DIR *pDir ;
char path[] = "~/Zy_program/c/test2/";//当前用户的Zy_program/c/test2/文件下
pDir = opendir(path);

2、readdir函数
头文件
#include

struct dirent *ent  ;
DIR *pDir ;
//当前用户的Zy_program/c/test2/文件下
char path[] = "~/Zy_program/c/test2/"; 

pDir = opendir(path);
ent=readdir(pDir));

三、实战
这是别人写的,我试过了,稍加注释

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/types.h>

void listDir(char *path)
{
    DIR              *pDir ;//首先通过opendir加工得到句柄
    struct dirent    *ent  ;//readdir加工opendir句柄后,将文件信息存放此处
    char              childpath[512];//存放查询文件路径

    pDir=opendir(path);//首先通过opendir将所给的路径加工一下存入DIR句柄中
    memset(childpath,0,sizeof(childpath));//将查询路径先清理一下,防止干扰

    while((ent=readdir(pDir))!=NULL)//调用readdir,不断得到文件信息
    {

        if(ent->d_type & DT_DIR)
        {

            if(strcmp(ent->d_name,".")==0 || strcmp(ent->d_name,"..")==0)//判断
                continue;

            sprintf(childpath,"%s/%s",path,ent->d_name);//路径+文件名
            printf("path:%s/n",childpath);//打印了

            listDir(childpath);//再次调用

        }
        else
        {
            printf("%s\n",ent->d_name);
        }
    }

}

int main(int argc,char *argv[])
{
    listDir(argv[1]);
    return 0;
}
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值