📄 compmain.c
字号:
//********************************************
//文件名:COMPMAIN.C
//功能:1. 调用显示汉字函数
// 2. 调用字符处理函数
// 3. 比较两个扇区文件,报告不相同的字节编号
//********************************************
#include<string.h> //1.
#include<graphics.h> //2.
#include<stdio.h> //3.
#include<conio.h> //4.
#include<stdlib.h> //5.
#include<ctype.h> //6.
#include<fcntl.h> //7.
#include<io.h> //8.
int outhz(int,int,char *,int); //9.
void finame(int,int); //10.
unsigned char h[512]; //11.
void main() //12.
{ //13.
FILE *fp1,*fp2,*fp3; //14.
long i=1,j=0; //15.
char *p="不相同的字节总数是:"; //16.
char *sp1,*sp2; //17.
char ch1,ch2; //18.
int k; //19.
extern char gsh[16]; //20.
int gdriver=DETECT,gmode; //21.
registerbgidriver(EGAVGA_driver); //22.
initgraph(&gdriver,&gmode,""); //23.
setbkcolor(0); //24.
cleardevice(); //25.
//26.
outhz(0,20,"输入比较的" //27.
"第一个文件名:",7); //28.
finame(210,20); //29.
strcpy(sp1,gsh); //30.
while(1) //31.
{ //32.
if((fp1=fopen(sp1,"rb"))==NULL) //33.
{ //34.
cleardevice(); //35.
setviewport(0,0,200,20,0); //36.
outhz(0,20,"输入的第一个文件名" //37.
"没有找到!",7); //38.
outhz(0,40,"是否继续输入第一个" //39.
"文件名(Y/N)?",7); //40.
k=toupper(getch()); //41.
while((k==78)||(k==89)) //42.
{ //43.
if(k==78) //44.
{ //45.
closegraph(); //46.
exit(0); //47.
} //48.
if(k==89) //49.
{ //50.
cleardevice(); //51.
outhz(0,20,"输入比较的第一个" //52.
"文件名:",7); //53.
finame(210,20); //54.
strcpy(sp1,gsh); //55.
break; //56.
} //57.
} //58.
} //59.
else //60.
break; //61.
} //62.
k=open(sp1,O_CREAT); //63.
if(filelength(k)!=512) //64.
{ //65.
close(k); //66.
cleardevice(); //67.
setviewport(0,0,200,20,0); //68.
outhz(0,20,"输入的第一个文件名" //69.
"错误!",14); //70.
outhz(0,40,"按任一键退出",15); //71.
getch(); //72.
closegraph(); //73.
exit(0); //74.
} //75.
close(k); //76.
//77.
cleardevice(); //78.
setviewport(0,0,200,20,0); //79.
outhz(0,20,"输入比较的" //80.
"第二个文件名:",7); //81.
finame(210,20); //82.
strcpy(sp2,gsh); //83.
while(1) //84.
{ //85.
if((fp2=fopen(sp2,"rb"))==NULL) //86.
{ //87.
cleardevice(); //88.
setviewport(0,0,200,20,0); //89.
outhz(0,20,"输入的第二个文件名" //90.
"没有找到!",7); //91.
outhz(0,40,"是否继续输入第二个" //92.
"文件名(Y/N)?",7); //93.
k=toupper(getch()); //94.
while((k==78)||(k==89)) //95.
{ //96.
if(k==78) //97.
{ //98.
closegraph(); //99.
exit(0); //100.
} //101.
if(k==89) //102.
{ //103.
cleardevice(); //104.
outhz(0,20,"输入比较的第二个" //105.
"文件名:",7); //106.
finame(210,20); //107.
strcpy(sp2,gsh); //108.
break; //109.
} //110.
} //111.
} //112.
else //113.
break; //114.
} //115.
k=open(sp2,O_CREAT); //116.
if(filelength(k)!=512) //117.
{ //118.
close(k); //119.
cleardevice(); //120.
setviewport(0,0,200,20,0); //121.
outhz(0,20,"输入的第二个文件名" //122.
"错误!",14); //123.
outhz(0,40,"按任一键退出",15); //124.
getch(); //125.
closegraph(); //126.
exit(0); //127.
} //128.
close(k); //129.
//130.
if((fp3=fopen("compsf.txt","rb"))!=NULL) //131.如果打开文件成功
{ //132.
fclose(fp3); //133.
cleardevice(); //134.
setviewport(0,0,400,20,0); //135.
outhz(0,20,"本程序需要建立" //136.
"[COMPSF.TXT]文件",7); //137.
outhz(0,40,"使用该名字的文件" //138.
"在当前目录下已经存在!",14); //139.
outhz(0,60,"是否继续运行" //140.
"(Y/N)?",15); //141.
k=toupper(getch()); //142.
while((k==78)||(k==89)) //143.
{ //144.
if(k==78) //145.
{ //146.
closegraph(); //147.
exit(0); //148.
} //149.
if(k==89) //150.
break; //151.
} //152.
} //153.
fp3=fopen("compsf.txt","wb"); //154.以写方式打开文件
fprintf(fp3,"不相同的字节编号是:\n"); //155.向文件输出字符串
while(!feof(fp1)) //156.测试文件尾
{ //157.
ch1=fgetc(fp1); //158.读文件1的字符
ch2=fgetc(fp2); //159.读文件2的字符
if(ch1!=ch2) //160.若字符不相等
{ //161.
fprintf(fp3,"%ld\n",i); //162.将字节编号写入文件
j++; //163.不相等字节计数
} //164.
i++; //165.
} //166.
fprintf(fp3,"比较结束\n"); //167.
fclose(fp1); //168.
fclose(fp2); //169.
fclose(fp3); //170.
if(j==0) //171.若不相等字节为0
{ //172.
cleardevice(); //173.
setviewport(0,0,200,20,0); //174.
remove("compsf.txt"); //175.删除文件
outhz(0,20,"没有找到不相同的字节",7); //176.
outhz(0,40,"按任一键退出",7); //177.
getch(); //178.
} //179.
else //180.否则
{ //181.
cleardevice(); //182.
setviewport(0,0,200,20,0); //183.
ltoa(j,sp1,10); //184.将数转为字符串
strcat(p,sp1); //185.两字符串相接
outhz(0,20,p,7); //186.
outhz(0,40,"不相同的字节编号存储在" //187.
"文件[compsf.txt]中",7); //188.
outhz(0,60,"按任一键退出",7); //189.
getch(); //190.
} //191.
closegraph(); //192.
} //193.
char gsh[16]; //194.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -