본문 바로가기
C Programming

[C]텍스트 파일 2개 열고 단어 비교 후 등록 안된 단어 다른 텍스트 파일에 저장

by TYB 2023. 10. 14.
반응형
#if 1
/*
txt파일a,b,c 3개열고a에단어최대10개, 단어길이는20자로제한,  
b에는검출대상단어를입력하고제한없음, 
c에는  a에있는데b에등록안된단어를저장함.
*/
#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)

int check_word(char aword[10][20], char bword[20], int cnt)
{

int i=0;
for (i = 0; i < cnt i++) {
if (!(strncmp(aword[i], bword, strlen(aword[i]) - 1))) {
printf("\n동일단어검출!\n"); 
return 0;
}
}
return 1;

}



int main(void) 
{
FILE* afp, *bfp, *cfp;
char aword[10][20] = { 0 };//최대단어10개, 단어길이20자
char temp[20] = { 0 };
char bword[100][20] = { 0 };//단어갯수제한없음, 단어길이20자
char cword[100][20] = { 0 };//단어갯수제한없음, 단어길이20자
int i = 0, j = 0, k = 0;

afp = fopen("a.txt", "r");
bfp = fopen("b.txt", "a+");
cfp = fopen("c.txt", "a+");


if (afp == NULL|| bfp == NULL|| cfp == NULL)printf("안열림");//file이하나라도안열리면에러메세지출력
else//file이정상적으로열렸다면다음동작수행
{
while (feof(afp) == 0) {//일단a.txt부터읽고aword 배열에저장
fgets(*(aword + i), 20, afp);
printf("%s", *(aword + i));
i++;
}
while (1)
{
printf("\nenter english word(END): ");
scanf("%s", temp);
if (strcmp(temp, "END") == 0) {//사용자입력이END나오면bword에서END 없애고탈출
break
}
else {//안나왔으면해당내용을b.txt파일에입력해줌

if (check_word(aword, temp, i))//만약입력받은단어가aword 내에 단어라면i는a단어수카운터
{
strcpy(*(bword + j), temp);
fputs(*(bword + j), cfp);//사용자의입력을받은bwrod의문자열을b.txt에넣어줌
fputs("\n", cfp);//그다음포인트에바로\n넣어줘서enter가되도록!!
}

strcpy(*(bword + j), temp);
fputs(*(bword + j), bfp);//사용자의입력을받은bwrod의문자열을b.txt에넣어줌
fputs("\n", bfp);//그다음포인트에바로\n넣어줘서enter가되도록!!

j++;
}
}

fseek(cfp, 0, SEEK_SET);
while (feof(cfp) == 0) {//일단a.txt부터읽고aword 배열에저장
fgets(*(cword+k), 20, cfp);
printf("%s", *(cword + k));
k++;
}

fclose(afp);
fclose(bfp);
fclose(cfp);
}
}

#endif

중요한 점은 이 코드가 위치하는 폴더 내에 a,b 텍스트 파일이 있어야 한다는 점이다.

 

반응형

'C Programming' 카테고리의 다른 글

[C] 2023년 달력 출력하기  (1) 2023.10.14
[C] 공용체를 활용한 비트 연산  (0) 2023.10.14
[C]구조체 사용하기  (2) 2023.10.14
[C]실수 값 오름차순 정렬  (0) 2023.10.14
[C]대소문자 변환 프로그램  (0) 2023.10.14