Code: Select all
#include "stdafx.h"
#include <stdio.h>
#include <process.h>
#include <stdlib.h>
int fl_kom, jo=0;;
void filter(char *v);
int medka(char *v, char *e, int *x);
int komanda(char *v, char *e, int *x);
void obshae(FILE *fi, FILE *ccss);
void obshae(FILE *fi, FILE *ccss)
{
char v[5000], e[5000], u[100];
int m=0,i,p=0,x=0,z=0;
do{
if(!feof(fi)){
fgets(&v[x],1000, fi);}
else{break;}
filter(&v[x]);
do{
while(1){
i=medka(v,e, &x);
if(i!=1)break;
if(z>0)fputc('\n',ccss);
fprintf(ccss,"%s",e);
printf("%s", e);
z++;
}
if(i==2){
i=komanda(v, e, &x);
if(i==1){
fputc('\t',ccss);
fprintf(ccss,"%s",e);
z=0;
fputc('\n',ccss);}
printf("%s", e);
}
}while(i!=3);
}while(!feof(fi));
}
void filter(char *v)
{
char e[10000];
int c=0, b=0,f;;
while(v[c]!=0){
if(v[c]=='{')fl_kom=1;
if(fl_kom==0 && v[c]!='\t' && v[c]!='\n'){
e[b]=v[c];
b++;}
if(v[c]=='}')fl_kom=0;
c++;
}
f=b;
b=0;
while(f>=0)
{v[b]=e[b];
b++;f--;}
v[b-1]=0;
}
int medka(char *v, char *e, int *x)
{
int p=0,i=0,u=0, r, y, d=0;
*x=0;
while(v[p]!=0){
if(v[p]==':'){p++; r=1; break;}
if(v[p]==';'){r=2; break;}
p++;
}
if(v[p]!=0){
y=p;
if(r==1){
while(y!=0){
if(v[d]!=' '){
e[i++]=v[d++];}
else{d++;}
y--;}
e[i]=0;
i=0;
while(v[p]!=0){
v[i++]=v[p++];}
v[i]=0;}}
else{r=3; *x=p;}
return (r);
}
int s4et4ik_bv1(char *bv1,int *n){
int x=0,d=0;
while(d<*n){
if(bv1[x]=='\n'){d++;}
if(bv1[x]==0){jo=5; break;}
x++;
}
return (x);
}
int s4et4ik_bv2(char *bv2,int *n){
int x=0,d=0;
while(d<*n){
if(bv2[x]=='\n'){d++;}
if(bv2[x]==0){jo=6; break;}
x++;
}
return (x);
}
int compared(char *r, char *d)
{
int m=0,sm=0;
while((r[m]!=0) || (d[m]!=0)){
if(r[m]!=d[m]){sm=3;break;};
m++;}
return (sm);
}
int compared_n(char *bv1, char *bv2, int *n,int *x,int *x1){
int m=0,sm, l1,l2, h, g=0, i=0, i1=0;
char r[5000], d[5000];
// i=*x;
// i1=*x1;
for(h=0;h<*n;h++){
l1=sscanf(&bv1[i],"%s",r);
if(l1!=1){return (5);}
l2=sscanf(&bv2[i],"%s",d);
if(l2!=1){return (6);}
while(r[g++]!=0); // òê ðàâíûå i;
i=g-1;
// i1=g-1;
g=0;
sm=compared(&r[0], &d[0]);
if(sm==3){return (1);}
}
return (2);
}
int komanda(char *v, char *e, int *x)
{
int g=0, r=0, t=3,fl_tch;
*x=0;
while(v[g]!=0){
if(v[g]!=' '){fl_tch=0;} // Ñíÿòèå ÔËÀÃÀ.
if(v[g]==','&&v[g-1]==' '){r--;} // Åñëè â ïåðåäè ÇÏ ïðîáåë
if(v[g]==','){fl_tch=1;e[r++]=',';}
if(g==0&&v[g]==' '){fl_tch=1;} // Åñëè 1 ïðîáåë
if(v[g]==';'&&v[g-1]==' '){r--;} // åñëè ïåðåä ; ïðîáåë.
if(v[g]==' '&&fl_tch!=1){ e[r++]=v[g]; fl_tch=1;} // Ïèøèò 1 ïðîáåë è íåïðîïóñêàåò äð
if(fl_tch!=1){ e[r++]=v[g];} // Ïèøèò âñ¸ êðîìå ïðîáåëà
if(v[g]==';'){t=1; g++; break;}
g++;}
e[r]=0;
if(t!=1){*x=g;}
else{*x=0;}
r=0;
while(v[g]!=0)
v[r++]=v[g++];
v[r]=0;
return (t);
}
int main(int argc, char* argv[])
{
char v[5000], e[5000], u[100];
int m=0,i,p=0,x=0,z=0, bp;
/*
FILE *fi;
// a94.dsp q11.txt
// sravnenieNEW.exe
//printf("See the file name:");
if(argv[2]!=NULL)
exit(0);
fi=fopen(argv[1],"rt");
FILE *ccss;
while(argv[1][m]!='.')
u[m]=argv[1][m++];
u[m]='.';u[m+1]='t';u[m+2]='x';u[m+3]='t';u[m+4]=0;
ccss=fopen(u,"wt");
*/
FILE *fi;
fi=fopen("c:\\q1112.txt","rt");
if(fi==NULL)
{ printf("Failed to open file fi.\n");
exit(1);
}
FILE *ccss;
ccss=fopen("c:\\q1112_GOTOVOE.txt","wt");
if(ccss==NULL)
{ printf("Failed to open file ccss.\n");
exit(1);
}
obshae(fi,ccss);
FILE *fi1;
fi1=fopen("c:\\ccss1.txt","rt");
if(fi1==NULL)
{ printf("Failed to open file fi1.\n");
exit(1);
}
FILE *ccss1;
ccss1=fopen("c:\\q1112_GOTOVOE_2.txt","wt");
if(ccss1==NULL)
{ printf("Failed to open file ccss1.\n");
exit(1);
}
obshae(fi1,ccss1);
fclose(fi);
fclose(ccss);
fclose(fi1);
fclose(ccss1);
FILE *ccss10;
ccss10=fopen("c:\\q1112_GOTOVOE.txt","rt");
FILE *ccss101;
ccss101=fopen("c:\\q1112_GOTOVOE_2.txt","rt");
FILE *result;
result=fopen("c:\\1111111111111111111111111111111111111111111ab.txt","wt");
i=0;
x=0;
int sm=0,x1=0, n=1, nn,fl=0, xx=0, xx1=0, fl_uf=0, en=0, en1=0, mi, mi1, fl_iuy=0, po=0,po1=0,xx5,xx6, lp=0;
char *bv1, *bv2, vv[5000],ee[5000], ki[5000], *io, *io1;
nn=n; // ÷òîáû âåðíóòü Í ïî óì
bv1=(char*)malloc(300000000);
bv2=(char*)malloc(300000000);
io=(char*)malloc(300000000);
io1=(char*)malloc(300000000);
for(i=0;i<=289999999;i++){bv1[i]=0;bv2[i]=0;io[i]=0;io1[i]=0;}
i=0;
while(!feof(ccss10)){
fgets(ki,5000,ccss10);
while(ki[x]!=0)
bv1[i++]=ki[x++];
x=0;}
bv1[i]=0;
i=0;x=0;
while(!feof(ccss101)){
fgets(ki,5000,ccss101);
while(ki[x]!=0)
bv2[i++]=ki[x++];
x=0;}
bv2[i]=0;
i=0;
po=0;
po1=0;
do{
do{
if(fl_uf==0){
x=xx;
x1=xx1;
lp=xx1;
fl_uf=1;}
en=s4et4ik_bv1(&bv1[xx],&n);
if(jo==5){break;}
jo=0;
en1=s4et4ik_bv2(&bv2[xx1],&n);
if(po==0){po1=en1;}
po=1;
if(jo==6){
xx=xx+en;
xx1=lp;
xx1=xx1+po1;
lp=xx1;
po=0;
continue;}
fl=compared_n(&bv1[xx],&bv2[xx1],&n, &x,&x1); // x1 ÌÅÍßÒÜÑß!!
//2 Íåòó ðàçäíèöè 1 åñòü ðàçäíèöà.
if(fl==1&&fl_iuy==0){
fl_iuy=1;}
if(fl==2&&fl_iuy==1){
break;}
if(fl==2&&fl_iuy==0){
x=xx;
x1=xx1;
xx=xx+en;
xx1=xx1+en1;
continue;}
xx1=xx1+en1;
}while(1);
if(fl==2&&fl_iuy==1){
fl_iuy=0;
xx5=x;
xx6=x1;
po=0;po1=0;
lp=po;
while(x<=xx){io[po++]=bv1[x++];}
io[po-1]=0;
while(x1<=xx1){io1[po1++]=bv2[x1++];}
io1[po1-1]=0;
po=0;po1=0;
while(io[po++]!='\n');
while(io1[po1++]!='\n');
xx=po;xx1=po1;
x=0; /// ÔËÀÃ
do{
n=1;
jo=0;
en1=s4et4ik_bv2(&io1[po1],&n);
if(jo==6){
while(io[po++]!=0);
po=po-1;
lp=0;
break;}
if(x==0){x1=en;}
x=1;
en=s4et4ik_bv1(&io[po],&n);
if(jo==5){
x=0;
po1=po1+en1;
po=lp;
po=po+x1;
lp=po;
continue;}
fl=compared_n(&io[po],&io1[po1],&n, &po,&po1);
if(fl==1){po=po+en;} // íåðàâ (5-bv1 6-bv2)
if(fl==2){
po=po+en;
po1=po1+en1;
}
}while(fl!=2);
xx=xx5;
xx1=xx6;
mi=po+xx+lp;
mi1=po1+xx1;
i=0;
while(mi!=xx)
{ki[i++]=bv1[xx++];}
ki[i++]='\n';
ki[i++]=0;
fprintf(result,"1 FILE\n\n");
fprintf(result,"%s",ki);
i=0;
for(i=0;xx1!=mi1;i++){ki[i]=bv2[xx1++];}
ki[i++]='\n';
ki[i++]=0;
fprintf(result,"2 FILE\n\n");
fprintf(result,"%s",ki);
n=nn;
fl_uf=0;
fprintf(result,"********************\n");}
if(fl_uf==1)
n--;
if(jo==5&&n==0){
n++;
fl=compared_n(&bv1[x],&bv2[x1],&n, &x,&x1);
if(fl==2&&fl_iuy==0)
{break;}
else{fl=9;}}
jo=0;
}while(fl!=9);
if(fl==9){
for(i=0;bv1[x]!=0;i++){ki[i]=bv1[x++];}
ki[i++]='\n';
ki[i++]=0;
fprintf(result,"FILE 1 \n");
fprintf(result,"%s",ki);
for(i=0;bv2[x1]!=0;i++){ki[i]=bv2[x1++];}
ki[i++]='\n';
ki[i++]=0;
fprintf(result,"FILE 2 \n");
fprintf(result,"%s",ki);}
fclose(ccss);
fclose(ccss1);
return 0;
}