#include <stdio.h>
char a[100][80], b[100][80], aa[100][80], bb[100][80];
int saa[100], sbb[100];
int na, nb;
void load_data()
{
FILE *in1, *in2;
int res, i,j;
char ch;
in1 = fopen("texta.txt", "r");
i=0;
j=0;
while (1)
{
res = fscanf(in1, "%c", &ch);
if (res==EOF)
break;
if (ch==\'\\n\')
{
a[i][j]=0;
i++;
j=0;
}
else
{
a[i][j]=ch;
j++;
}
}
na=i;
in2 = fopen("textb.txt", "r");
i=0;
j=0;
while (1)
{
res = fscanf(in2, "%c", &ch);
if (res==EOF)
break;
if (ch==\'\\n\')
{
b[i][j]=0;
i++;
j=0;
}
else
{
b[i][j]=ch;
j++;
}
}
nb=i;
}
void remove_space() /* 복수개의 스페이스를 한개로 바꾸어 줌*/
{
int i,j,k;
for (k=0;k<na;k++)
{
i=0;
j=0;
while (a[k][i] == \' \')
i++; /* 앞의 빈칸 skip */
while ((i<80) && (a[k][i] != 0))
{
if ((i>0) && (a[k][i] == \' \') && (a[k][i-1] == \' \'))
i++;
else
{
aa[k][j] = a[k][i];
i++;
j++;
}
}
if ((j>0)&&(aa[k][j-1] == \' \'))
{
aa[k][j-1]=0;
saa[k] =j-1;
}
else
{
aa[k][j] =0;
saa[k] = j;
}
}
for (k=0;k<nb;k++)
{
i=0;
j=0;
while (b[k][i] == \' \')
i++; /* 앞의 빈칸 skip */
while ((i<80) && (b[k][i] != 0))
{
if ((i>0) && (b[k][i] == \' \') && (b[k][i-1] == \' \'))
i++;
else
{
bb[k][j] = b[k][i];
i++;
j++;
}
}
if ((j>0)&&(bb[k][j-1] == \' \'))
{
bb[k][j-1]=0;
sbb[k]=j-1;
}
else
{
bb[k][j] =0; sbb[k]=j;
}
}
}
==============================================================================
int compare_line(char x[80], char y[80], int sx, int sy)
{ /*한 줄의 텍스트가 정확히 일치하는가*/
int i;
if ((sx == sy) && (sx >2))
{ /* if the length is equal && more than 2 words*/
for (i=0; i<sx; i++)
if (x[i]!=y[i])
return 0;
/* else if ((x[i]==0)&&(y[i]==0)) return 1; */
return 1;
}
else
return 0;
}
int compare_text(int nline1,int nline2)
{ /*라인이 같은 경우가 몇번 발생하는가?*/
int i, j, same, same_count;
same_count=0;
/* printf ("nline %d %d\\n", nline1, nline2); */
for (i=0; i<nline1; i++)
{
for (j=0; j<nline2; j++)
{
same = compare_line (aa[i], bb[j], saa[i], sbb[j]);
/* printf ("%d %d %s %s\\n", saa[i], sbb[j], aa[i], bb[j]); */
if (same==1)
{
same_count++;
} /* printf(">>>>>the line %d and %d is same %d\\n",i, j, same_count); */
}
}
return same_count;
}
void decision(int same_count)
{
printf ("전체 문장 수 %d %d 라인 중복 횟수 %d \\n", na, nb, same_count);
if (same_count > na/10)
printf ("아무래도 베낀 문장 같습니다.\\n");
else
printf("Looks like an original text.\\n");
}
int main()
{
int i;
int same_cnt=0;
load_data();
remove_space();
/* for (i=0;i<na;i++)
printf(".....%d..%s===%s...\\n", saa[i], a[i], aa[i]);
for (i=0;i<na;i++)
printf(".....%d..%s===%s...\\n", sbb[i], b[i], bb[i]); */
same_cnt=compare_text(na, nb);
/* printf("++++%d++++++++\\n", same_cnt); */
decision(same_cnt);
return 0;
}
횽들 ===================== 위에 껀 파일 라인수 읽는거랑 공백제거 자나요 이부분은 대충 알겟는대
밑에 소스는 모르겠어요 ㅠㅠ
전 int main() 만 써봐서
void decision(int same_count) 이런건 어떤건지도 모르겟고
return 0; 만 써봐서 return 1; return same_count; 먼지도 모르겟고... ㅠㅠ
이 소스에 텍스트 파일에 총 글자수가 몇개 인지 알아보는 소스도 알려주세요 ㅠ
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.