3

我正在尝试遍历目录并检查重复文件。

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。是否有一个简单的解决方法或者我应该使用其他东西?

4

1 回答 1

2

你需要重新构建你的方法。内部while正在耗尽文件列表,因此外部成功后当然会失败一次。

更好的方法可能是存储文件,这样您就可以将每个新传入的文件与存储的文件进行比较,或者使用递归方法。两者都需要内存。

于 2012-10-22T10:25:20.447 回答