歡迎您光臨本站 註冊首頁

linux下tree、命令的用法及實現代碼 .

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

linux下tree、命令的用法及實現代碼 .

linux下tree、命令的用法及實現代碼 .

Linux下有這樣一個命令,可以把當前目錄下的所有文件和子文件以tree的方式顯示出來,看下效果01.$ tree  
02..  
03.|-- A  
04.|-- B  
05.|-- C  
06.`-- test2  
07.    |-- D  
08.    |-- E  
09.    `-- F  
10.  
11.3 directories, 4 files  
12.$   自己用遞歸方式用C實現了下,效果如下:01.$ ./a.out   
02../test  
03.  A  
04.  a.out  
05.  B  
06.  C  
07.  +test2  
08.    F  
09.    +D  
10.    +E  
11.$   這裡+號表示directory.

下面是源碼:01.#include    
02.#include    
03.#include    
04.#include    
05.using namespace std;  
06.  
07.int showConsoleDir(char* path, int cntFloor) {  
08.    DIR* dir;  
09.    DIR* dir_child;  
10.    struct dirent* dir_ent;  
11.  
12.    if ((dir = opendir(path))==NULL) {   //open current directory   
13.        cout<<"open dir failed!"<<endl;  
14.        return -1;  
15.    }  
16.    while ((dir_ent = readdir(dir))!=NULL) {  
17.        if ((dir_ent->d_name == '.') || (strcmp(dir_ent->d_name, "..") ==0)){   //if . or .. directory continue   
18.            continue;  
19.        }  
20.        char tName;  
21.        memset(tName, 0, 10000);  
22.        snprintf(tName,sizeof(tName),"%s/%s",path,dir_ent->d_name);  
23.        if ((dir_child = opendir(tName))!=NULL){  //if have a directory   
24.            int t = cntFloor;  
25.            while (t--) {  
26.                cout<<"  ";  
27.            }  
28.            cout<<"+"<d_name<<endl;  
29.            showConsoleDir(tName, cntFloor+1);  
30.        }  
31.        else  
32.        {  
33.            int t = cntFloor;  
34.            while (t--) {  
35.                cout<<"  ";  
36.            }  
37.            cout<d_name<<endl;  
38.        }     
39.    }     
40.}  
41.  
42.int main(int argc, char* argv[]){  
43.    int cntFloor=1;  
44.    showConsoleDir("./", cntFloor);  
45.  
46.      
47.}  
《解決方案》

學習嘍

[火星人 ] linux下tree、命令的用法及實現代碼 .已經有392次圍觀

http://coctec.com/docs/service/show-post-1489.html