1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#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;
}