2012-10-22 169 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