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;
}
|
本文转自神ge 51CTO博客,原文链接:http://blog.51cto.com/12218412/1871930