티스토리 뷰

단어 검출 프로그램을 만듭니다.

 

텍스트 파일에서 등록된 단어 이외의 단어를 찾아 새로운 파일에 출력합니다.

모든 단어의 길이는 최대 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함