凹入法寫入指定目錄至文件,並計算目錄大小

2021-10-01 07:26:46 字數 2712 閱讀 4322

給出指定目錄檔案系統的目錄結構,以凹入法寫入檔案dir_structure.txt文件中,並計算出該目錄所佔儲存區域大小。(凹入法顯示參見p93)

實現效果:

#include#include#include#include//目錄操作的標頭檔案 

#include#includefile*fp;

//測試模組

long long size=0l;

void printdir(char *dir, int depth)

chdir(dir);//用於改變當前工作目錄,其引數為path 目標目錄

struct dirent *pentry;

struct stat statbuf;

while((pentry = readdir(pdir)) != null)

printf("%*s%s/\n",depth,"",pentry->d_name);

fprintf(fp,"%*s%s/\n",depth,"",pentry->d_name);

printdir(pentry->d_name,depth+4);

}else

}chdir("..");//返回上一級目錄

closedir(pdir);//關閉引數dir所指的目錄流。關閉成功則返回0,失敗返回-1

}int main()

vs2019版本實現效果:

vs2019實現**:

#include#include#include#include#includeusing namespace std;

file* fp;

long long size=0;//預先設定大小變數

void transfile(char * fname, int depth)

void filesearch(string path, int depth)

printf("%*s/", depth, "");

string a;a = path + "\\" + fa.name;

size+= fa.size;

transfile(fa.name, depth);

//fprintf(fp, "%*s%s/\n", depth, "", fa.name);

//cout << path+"\\"+fa.name << endl;

cout << fa.name << endl;

/*資料夾下有 . 和 .. 目錄,不能進入搜尋;

_a_subdir 表示資料夾屬性;*/

if (strcmp(fa.name, "..") && strcmp(fa.name, ".") && fa.attrib == _a_subdir)

filesearch(path + "\\" + fa.name, depth + 4);

} while (_findnext(fhandle, &fa) == 0);

/* _findnext 搜尋與_findfirst函式提供的檔名稱匹配的下乙個例項,若成功則返回0,否則返回-1 ;

_findclose 結束查詢;

*/ _findclose(fhandle);

return;

}int main()

#include#include#include#include#include#include#includeusing namespace std;

file* fp;

long long size=0;

void filesearch(string path, int depth)

printf("%d%*s/", depth, depth, "");

string a;

a = path + "\\" + fileinfo.name;

size+= fileinfo.size;

fprintf(fp, "%*s%s/\n", depth, "", a.c_str());

//cout << path+"\\"+fileinfo.name << endl;

cout << fileinfo.name << endl;

/*資料夾下有 . 和 .. 目錄,不能進入搜尋;

_a_subdir 表示資料夾屬性;*/

if (strcmp(fileinfo.name, "..") && strcmp(fileinfo.name, ".") && fileinfo.attrib == _a_subdir)

filesearch(path + "\\" + fileinfo.name, depth + 4);

} while (_findnext(hfile, &fileinfo) == 0);

/* _findnext 搜尋與_findfirst函式提供的檔名稱匹配的下乙個例項,若成功則返回0,否則返回-1 ;

_findclose 結束查詢;

*/ _findclose(hfile);

return;

}int main()

法正(11) 入川

劉焉在蜀中開創基業之初,作為乙個外來者,顯然對這些狀況缺乏了解,也就沒能因時制宜地處理好與益州豪強的關係,這樣一來,劉焉的政權自然搖搖晃晃,動盪不安。既然無法和當地豪族打成一片,劉焉就開始招納外族。益州的地理環境,為劉焉的政策提供了良好的客觀條件。因為這個地區是 漢蠻雜揉,具有邊區的性質。自東漢中業...

jam計數法(華為入職前練習)

jam是個喜歡標新立異的科學怪人。他不使用阿拉伯數字計數,而是使用小寫英文本母計數,他覺得這樣做,會使世界更加豐富多彩。在他的計數法中,每個數字的位數都是相同的 使用相同個數的字母 英文本母按原先的順序,排在前面的字母小於排在它後面的字母。我們把這樣的 數字 稱為jam數字。在jam數字中,每個字母...

劍指offer 回溯法

面試題12 矩陣中的路徑 上下左右遞迴,在看邊界條件 include includeusing namespace std 遞迴 bool haspathcore char m,int row,int col,int i,int j,const char str,int pathlen,bool v...