2012-10-22 205 views
3

我想遍歷一個目錄並檢查重複的文件。目錄遍歷c

void findDuplicates(){ 
    char *dot[] = {".", 0}; 
    FTS *ftsp, *temp_ftsp; 
    FTSENT *entry, *temp_entry; 
    int fts_options = FTS_LOGICAL; 
    ftsp = fts_open(dot, fts_options, NULL); 
    while((entry = fts_read(ftsp)) != NULL){ 
     temp_ftsp = ftsp; 
     while((temp_entry = fts_read(temp_ftsp)) != NULL){ 
      compareEntries(temp_ftsp, ftsp); 
     } 
    } 
} 

但它沒有按照我想要的方式遍歷目錄。在第二個while循環之後,

entry = fts_read(ftsp) 

返回NULL。有沒有一個簡單的解決方案,或者我應該使用別的東西?

回答

2

您需要重新構建您的方法。內部的while正在耗盡文件列表,所以當然外部成功後會失敗一次。

更好的方法可能是存儲文件,以便您可以將每個新傳入文件與存儲文件進行比較,或使用遞歸方法。兩者都需要記憶。

+0

好點,我想我必須這樣做。將所有文件存儲在結構中聽起來是最簡單的方法。謝謝。 –

+0

@KlāvsTaube如果您覺得這有幫助,請隨時上傳和/或接受。 :) – unwind