高分悬赏 用C/C++实现 全盘重复文件查找的方法,不需要输入任何信息,就可以查询到所有重复文件

在不需要知道文件名的情况下,查找计算机上不同存储位置的重复文件
最好附上源代码,谢谢

这个可以很容易实现的,比如查找c盘中所有文件吧,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

void print(char *path)
{
//递归打印uc下所有内容(包括子目录)
DIR* dir = opendir(path);
if(dir == NULL)
perror("opendir"),exit(-1);
chdir(path);//切换目录
struct dirent* ent;
while(ent=readdir(dir))
{
if(strcmp(".",ent->d_name) == 0 || strcmp("..",ent->d_name) == 0)continue;
if(ent->d_type == 4)
{ //目录
printf("%s\n",ent->d_name);//打印目录名
print(ent->d_name);//递归调用
}
else
{ //文件
printf("%s\n",ent->d_name);
}
}
chdir("..");//退到上一层
}

int main()
{
print("/home");//主目录home
}
楼主可以试试
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-28
每一个文件假如在同一个磁盘里面重复的话,磁盘都是会发出警告的啊!除法你把文件的名字改变的话,可能还会出现重复的,但是这涉及到了对于文件内容的识别搜索,难度很大啊!涉及相应的API函数很多的啊!楼主还是自己在网上好好搜搜,自己参考MSDN来尝试着写吧!这真的有很大的难度。一时半刻还是不能解决的啊!
第2个回答  2013-04-29
没人解决分就给我吧 - -实在不会,帮不到你,不好意思。希望你的问题早日解决吧。
第3个回答  2013-04-29
这要看你指的“重复”是什么含义了……我完全可以通过重命名使两个不同的文件有相同的名字……
如果只考虑文件名的话,可以通过外排序先将文件排序,之后参考C++STL中unique()的算法实现本回答被提问者和网友采纳
相似回答