我想拿两个文件,逐字节比较,并测试它的性能,
到目前为止,这就是我的代码:
#include<stdio.h>
#include <time.h>
int main()
{
FILE *fp1, *fp2;
int ch1, ch2;
char fname1[40], fname2[40] ;
printf("Enter name of first file :") ;
gets(fname1);
printf("Enter name of second file:");
gets(fname2);
clock();
fp1 = fopen( fname1, "r" );
fp2 = fopen( fname2, "r" ) ;
if ( fp1 == NULL )
{
printf("Cannot open %s for reading\n", fname1 );
exit(1);
}
else if (fp2 == NULL)
{
printf("Cannot open %s for reading\n", fname2 );
exit(1);
}
else
{
ch1 = getc( fp1 ) ;
ch2 = getc( fp2 ) ;
while( (ch1!=EOF) && (ch2!=EOF) && (ch1 == ch2))
{
ch1 = getc(fp1);
ch2 = getc(fp2);
}
if (ch1 == ch2)
printf("Files are identical\n");
else if (ch1 != ch2)
printf("Files are Not identical\n");
fclose ( fp1 );
fclose ( fp2 );
}
printf("That took %d seconds.\n", clock() / CLOCKS_PER_SEC);
return 0;
}
我被告知:&#34; ==&#34;不是逐字节比较,我如何实现这一点,以便我可以按位运算?
另外,有没有办法检查单个文件本身有多少重复?
提前感谢您的帮助!
答案 0 :(得分:2)
在示例2中,您没有检查文件结尾。这就是为什么它永远不会停止。
您正逐字节进行比较。我认为一旦修复第二个版本,两个版本都会没问题。
您可能会考虑另外几件事: