[C언어] 서로 다른 단어의 개수 카운트
728x90

-파일 입출력 사용

-입력 텍스트는 영어(대소문자 구분 X), 입력을 끝마치 싶을 때는 EOF 입력

-단어의 개수는 최대 30, 단어의 길이는 10 초과 X

 

#include <stdio.h>
#include <string.h>

#define COUNT 30  //최대 단어 개수
#define LENGTH 10 //최대 단어 길이

void storeWords(FILE *,char [LENGTH][COUNT]);
int countWords(FILE *, char [LENGTH][COUNT], int);

int main() {
	FILE * in_fp = fopen("input.txt", "w");
	char words[LENGTH][COUNT] = {NULL};
	storeWords(in_fp, words); //입력한 단어 저장 함수
	fclose(in_fp);
}

void storeWords(FILE *in_fp, char words[LENGTH][COUNT]) {
	int total = 0;
	for (int i = 0; i < LENGTH; i++) {
		scanf("%s", words[i]);
		total++;
		if (strcmp(words[i], "EOF") == 0) {
			total--;
			break;
		}
		fprintf(in_fp, "%s\n", words[i]);

		if (tolower(words[i])) strupr(words[i]);
	}
	int answer = countWords(in_fp, words, total); // 입력한 단어 개수 반환 함수
	printf("total count of words: %d\n", answer);
}

int countWords(FILE *in_fp, char words[LENGTH][COUNT], int total) {
	int cnt = 0;
	int j;
	for (int i = 0; i < total; i++) {
		for (j = i + 1; j < total; j++) {
			if (strcmp(words[i], words[j]) == 0) break;
		}
		if (j == total) cnt++;
	}
	return cnt;
}

 

참고:

 

C, Count unique strings in an array of strings

Using C, I have an array of strings, some are duplicates. I'm trying to count the number of unique strings. Code: for(i=0; i<size; i++){="" flag="0;" if(strcmp("="" ",="" tarr...<="" p=""> </size;>

stackoverflow.com

 

320x100