티스토리 뷰
단어 검출 프로그램을 만듭니다.
텍스트 파일에서 등록된 단어 이외의 단어를 찾아 새로운 파일에 출력합니다.
모든 단어의 길이는 최대 20자, 등록 단어 수는 최대 10개로 제한하며 검출 대상 단어 수는 제한이 없습니다.
다음 실행 결과는 b.txt에서 a.txt에 등록되지 않은 단어를 찾아 c.txt에 출력합니다.
실행결과는 다음과 같습니다.
a.txt 등록 단어 파일 | b.txt 입력 단어 파일 | c.txt 결과 파일 |
dog tiger horse monkey lion koala griaffe owl |
lion elephant pear dog tiger apple kangaroo orange bear owl |
elephant pear apple kangaroo orange bear |
다음은 제가 작성한 코드입니다.
wordB와 wordA에 올바른 값이 들어가는지 확인하기위해 화면에 출력하는 코드도 추가하였습니다.
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE* fpA, * fpB, * fpC;
fpA = fopen("a.txt", "rt");
if (fpA == NULL)
{
printf("a.txt파일을 열지 못했습니다.\n");
return 1;
}
fpB = fopen("b.txt", "rt");
if (fpB == NULL)
{
printf("b.txt파일을 열지 못했습니다.\n");
return 1;
}
fpC = fopen("c.txt", "wt");
if (fpC == NULL)
{
printf("c.txt파일을 생성하지 못했습니다.\n");
return 1;
}
while (1)
{
char* res;
char wordB[20];
res = fgets(wordB, 20, fpB);
if (res == NULL) break;
wordB[strlen(wordB) - 1] = '\0';
printf("wordB = %s\n", wordB);
fseek(fpA, 0, SEEK_SET);
int isSame = 0;
while (1-isSame)
{
char wordA[20];
char* res;
res = fgets(wordA, 20, fpA);
if (res == NULL) break;
wordA[strlen(wordA) - 1] = '\0';
printf("\twordA = %s\n", wordA);
if (strcmp(wordA, wordB) == 0)
{
isSame = 1;
break;
}
}
if (1-isSame)
{
fputs(wordB, fpC);
fputs("\n", fpC);
}
}
fclose(fpA);
fclose(fpB);
fclose(fpC);
return 0;
}
/*
실행결과
wordB = lion
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordB = elephant
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
wordB = pear
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
wordB = dog
wordA = dog
wordB = tiger
wordA = dog
wordA = tiger
wordB = apple
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
wordB = kangaroo
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
wordB = orange
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
wordB = bear
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
wordB = owl
wordA = dog
wordA = tiger
wordA = horse
wordA = monkey
wordA = lion
wordA = koala
wordA = griaffe
wordA = owl
*/
다음은 제 코드의 실행결과입니다.
문제에 나와있는 것과 똑같이 a.txt파일과 b.txt파일을 만들었고,
c.txt는 프로그램내에서 새로 만들어 해당 데이터를 저장하였습니다.
a.txt 등록 단어 파일 | b.txt 입력 단어 파일 | c.txt 결과 파일 |
dog tiger horse monkey lion koala griaffe owl |
lion elephant pear dog tiger apple kangaroo orange bear owl |
elephant pear apple kangaroo orange bear |
'공부 일지 > C언어 공부 일지' 카테고리의 다른 글
전처리와 분할 컴파일 (0) | 2021.02.04 |
---|---|
파일 입출력 실전문제3 (0) | 2021.02.04 |
파일 입출력 실전문제1 (0) | 2021.02.01 |
다양한 파일 입출력 함수 (0) | 2021.02.01 |
파일 입출력 (0) | 2021.02.01 |