이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date |
2010/06/07 18:47:58 |
Name |
제로스 |
Subject |
치팅프로그램 좀 봐주세요. |
두 소스파일을 비교해서 한쪽파일이 변수의 이름을 바꿨는지 찾는 프로그램인데요.
어떻게 할지 막막해서 두 소스파일에서 자료형 갯수를 비교해서
갯수가 같으면 변수이름을 바꿨다고 생각해서 프로그램을 짰는데요.
아무래도 이렇게 하다보니 한파일이 다른 파일에 변수이름만 바꿨을때는 치팅을 찾을 수 있지만,
완전히 다른 소스파일인데 우연히 자료형의 갯수가 같을때에도 두 소스파일이 같다고 찾아버리는 경우가 발생하는데요.
그래서 다른 방법을 생각해 봤는데 .. 딱히 떠오르지 않아서 피쟐 여러분에게 도움 청합니다.
아래는 제가 위처럼 생각해서 짠 프로그램입니다.
#include<stdio.h>
#include<string.h>
#define SIZE 256
int main(){
FILE *file;
char str[SIZE];
int Countshort[2];
int Countint[2];
int Countlong[2];
int Countchar[2];
int Countfloat[2];
int Countdouble[2];
file=fopen("c:\\sample1.txt","r");
if(file==NULL){
printf("file open error!\n");
return 1;
}
// 단어를 읽어와서 자료형인지 비교후 맞다면 변수값을 증가시킴
while(!feof(file)){
fscanf(file,"%s",str);
if((strcmp(str,"short"))==0)
Countshort[0]++;
else if((strcmp(str,"int"))==0)
Countint[0]++;
else if((strcmp(str,"long"))==0)
Countlong[0]++;
else if((strcmp(str,"char"))==0)
Countchar[0]++;
else if((strcmp(str,"float"))==0)
Countfloat[0]++;
else if((strcmp(str,"double"))==0)
Countdouble[0]++;
}
fclose(file);
file=fopen("c:\\sample2.txt","r");
if(file==NULL){
printf("file open error!\n");
return 1;
}
while(!feof(file)){
fscanf(file,"%s",str);
if((strcmp(str,"short"))==0)
Countshort[1]++;
else if((strcmp(str,"int"))==0)
Countint[1]++;
else if((strcmp(str,"long"))==0)
Countlong[1]++;
else if((strcmp(str,"char"))==0)
Countchar[1]++;
else if((strcmp(str,"float"))==0)
Countfloat[1]++;
else if((strcmp(str,"double"))==0)
Countdouble[1]++;
}
fclose(file);
// 두 소스파일의 자료형 갯수가 같다면 치팅으로 생각
if(Countshort[0]==Countshort[1]&&Countint[0]==Countint[1]&&Countlong[0]==Countlong[1]&&
Countchar[0]==Countchar[1]&&Countfloat[0]==Countfloat[1]&&Countdouble[0]==Countdouble[1])
printf("변수의 이름을 바꿨습니다.\n");
else
printf("변수의 이름을 바꾸지 않았습니다.\n");
}
|
통합규정 1.3 이용안내 인용
"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
|