#include <stdio.h>                                                              
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
#include <iostream>
using namespace std;

void print(const char* path){
    DIR* dir = opendir(path);
    if(NULL == dir){
        return ;
    }
    struct dirent* ent;
    while(ent=readdir(dir),ent){//注意逗号表达式.
        if(4 == ent->d_type){
            printf("[%s]\n",ent->d_name);
            if(!strcmp(ent->d_name,".")||!strcmp(ent->d_name,"..")){
                continue;
            }
            char buf[100]={0};
            sprintf(buf,"%s/%se",path,ent->d_name);
            print(buf);//这里递归.
        }
        if(8 == ent->d_type){
            printf("%s\n",ent->d_name);
        }
    }
    int res = closedir(dir);
    if(-1 == res){
        return;
    }
}
int main(void){
    print("./");
    return 0;
}