我正在尝试遍历目录并检查重复文件。
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。是否有一个简单的解决方法,或者我应该使用别的东西?
答案 0 :(得分:2)
您需要重新构建您的方法。内部while
正在耗尽文件列表,所以当然外部将在成功后失败一次。
更好的方法可能是存储文件,这样您就可以将每个新传入文件与存储文件进行比较,或使用递归方法。两者都需要记忆。