程序运行时(在DOS模式下)输入的方式如下:compare xx1.reg xxx2.reg xxx3.txt
程序代码:
# include "stdio.h" /*定义头文件或说包含文件*/
main(argc,argv) /*定义带参数的主函数*/
int argc; /*定义参数类型*/
char *argv[]; /*定义第二参数类型*/
{ FILE *fp1,*fp2,*fp3; /*定义文件指针*/
char a,b; /*定义字符变量*/
if((fp1=fopen(argv[1],"r"))==NULL)
/*打开第一的注册表备份文件,如果不存在则跳出程序并显示“The file don`t open!”*/
{ printf("The file don`t open!");
exit(0); }
if((fp2=fopen(argv[2],"r"))==NULL) /*打开第二的注册表备份文件,如果不存在则跳出程序并显示“The file don`t open!”*/
{ printf("The file don`t open!");
exit(0);}
if((fp3=fopen(argv[3],"w"))==NULL) /*建立新的文本文件,用于存放比较结果。*/
{printf("The file don`t open!");
exit(0);}
rewind(fp1); /*规定文件指针fp1指向第一个注册表文件头部*/
rewind(fp2); /*规定文件指针fp2指向第二个注册表文件头部*/
while(!feof(fp1)||!feof(fp2)) /*开始比较*/
{ a=fgetc(fp1); /*读取第一个注册表文件内容并赋予给字符变量a*/
b=fgetc(fp2); /*读取第二个注册表文件内容并赋予给字符变量b*/
if(a!=b) fputc(b,fp3);
/*字符变量a与b不相同的话,那么把不同之处写入新建的文本文件中*/
if(feof(fp1)) fputc(b,fp3);
/*如果第一个注册表文件已经读完,第二个文件还有未读取部分,那么把第二个文件的剩余部分全部写入新建文件中*/
if(feof(fp2)) fputc(a,fp3);} /*如果第二个注册表文件已经读完,第一个文件还有未读取部分,那么把第一个文件的剩余部分全部写入新建文件中*/
fclose(fp1); /*关闭第一个注册表文件*/
fclose(fp2); /*关闭第二个注册表文件*/
fclose(fp3); /*关闭新建文件*/
}