~cpp
#include <stdio.h>
void exist_word(char x[40], int exist_str[10]); //x[i]에 문자열의 유무
int compare_str(char x[40], char search_str[15], int exist_str[10]); // 문자열 비교
int word_num = 1, search_str_num = 0;
int found = 0; int temp = 0;
void main()
{
char x[40] = "His teaching method is very good.";
char search_str[15];
int exist_str[10]; // exist_str[i]에는 x문자열중 i번째 문자열이 몇번째 문자에 나오나
FILE *fp;
fp = fopen("result.out", "w");
while(1){
word_num = 1; search_str_num = 0; found = 0; temp = 0;
printf("끝내려면 ""EE""입력\n"); //출력.
printf("자료 -> %s", x);
printf("\n찾을 문자열 -> ");
scanf("%s", search_str);
fprintf(fp,"자료 -> %s", x); //result.out에 저장.
fprintf(fp, "\n찾을 문자열 -> ");
fprintf(fp, "%s", search_str);
if(search_str[0] == 'E' && search_str[1] == 'E')
break;
exist_word(x, exist_str);
found = compare_str(x, search_str, exist_str);
switch(found){
case 1:
fprintf(fp, "\nfirst found -> %d\n\n", exist_str[word_num]+1);
break;
case 0:
fprintf(fp, "\nNot found!\n\n");
break;
}
}
fclose(fp);
}
void exist_word(char x[40], int exist_str[10])
{
int num = 2, x_n = 0;
exist_str[1] = 0;
while(x[x_n])
{
if(x[x_n] == ' ')
{
exist_str[num] = x_n + 1; //빈칸 다음에 문자열이 나온다고 가정.
++num;
}
++x_n;
}
}
int compare_str(char x[40], char search_str[15], int exist_str[10])
{
if(x[exist_str[word_num]] != search_str[search_str_num])
{
++word_num;
if(exist_str[word_num] >= 0)
compare_str(x, search_str, exist_str);
}else{
temp = exist_str[word_num];
while(search_str[search_str_num])
{
if(x[temp] == search_str[search_str_num]){
found = 1;
++temp;
++search_str_num;
}else{
found = 0;
break;
}
}
}
return found;
}