2014-11-02 107 views
0

我需要編寫一個程序,該程序從用戶處獲取根目錄和最小文件大小,然後計算大於用戶在所有子目錄中輸入的大小的所有文件。遞歸計數

出於某種原因,我的遞歸只計算當前工作目錄中的文件,而不計入子目錄中的文件。任何線索如何解決這個問題?它正確地計算工作目錄中的文件數量。

+1

對於鬧意,把一個符號連接到一個包含目錄到一個(子)目錄中。 – Deduplicator 2014-11-02 02:24:21

回答

0

當您遞歸調用函數時,您需要正確指定路徑。 dentry->d_name僅引用文件名;它不包含它所屬的目錄名稱。

否則,它會嘗試緩存到可能不存在的目錄中。 (或者,如果有一個名稱與父目錄相同的目錄,它將嘗試無限遞歸到同一個目錄中)。

char path[PATH_MAX]; 

.... 

snprintf(path, sizeof path, "%s/%s", fileName, dentry->d_name); 
countFiles(path, count, size);