我想拿两个文件,逐字节比较它们,并测试它的性能,
到目前为止,这就是我的代码:
#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;
}
这个代码比较两个文件是否完全相同,但是我想通过使用XOR的按位运算来检查,我是如何做到这一点的?
我有什么办法可以一次读取一个字节的文件吗?
提前感谢您的帮助!
答案 0 :(得分:1)
如何准确地使用您的代码并在主循环中更改它?
while( (ch1!=EOF) && (ch2!=EOF) && !(ch1 ^ ch2))
{
ch1 = getc(fp1);
ch2 = getc(fp2);
}
快速注意:您已经逐字节地读取文件。 getc()
只从文件中读取一个字符,然后将其存储为int。来自getc()
功能的说明:On success, the character read is returned (promoted to an int value)
。