linux文件系统——递归实现绝对路径下的遍历

输入一个绝对路径,将这个路径下的所有文件目录打印出来。
方法1:

#include
#include
#include
#include

using namespace std;

int printfdir(string path)
{
    string currPath=path;   
    DIR* dp =opendir(path.c_str());
    if(dp==NULL)
    {
        cout<<"Open directory error: "<d_name[0]=='.'||strcmp(entry->d_name,"..")==0)
        {
            continue;
        }
        cout<d_name<d_type==DT_DIR)
        {                   
            printfdir(currPath+entry->d_name+'/');  
        }       
            
    }
    
    closedir(dp);
    
    return 0;
}



int main(int argc,char *argv[])
{
    char* topdir=NULL;
    char pwd[2]=".";    
    if(argc==1)
    {
        topdir = pwd;       
    }   
    else
    {
        topdir=argv[1];
    }
    printfdir(topdir);
    return 0;
}

打印效果:


c33172152d180a98bfc753888f015ea.jpg

方法2:加入depth参数,能够打印出层级效果。
Note:用户端依旧只需要传入绝对路径即可。

#include
#include
#include
#include

using namespace std;

int printfdir(string path, int depth)
{
    string currPath=path;   
    DIR* dp =opendir(path.c_str());
    if(dp==NULL)
    {
        cout<<"Open directory error: "<d_name[0]=='.'||strcmp(entry->d_name,"..")==0)
        {
            continue;
        }
        for(int i=0;id_name<d_type==DT_DIR)
        {   
                            
            printfdir(currPath+'/'+entry->d_name,depth+1);  
        }       
            
    }
    
    closedir(dp);
    
    return 0;
}

void printdir(string path)
{
    printfdir(path,0);
}


int main(int argc,char *argv[])
{
    char* topdir=NULL;
    char pwd[2]=".";    
    if(argc==1)
    {
        topdir = pwd;       
    }   
    else
    {
        topdir=argv[1];
    }
    printdir(topdir);
    return 0;
}

打印效果:


image.png

你可能感兴趣的:(linux文件系统——递归实现绝对路径下的遍历)