나는 완벽하게 작동하는 함수를 가지고 있습니다. 사용자가 단어와 키워드를 입력합니다. 키워드 대신에 어떤 글자를 사용할 수 있습니까? 임의의 임의의 문자를 의미합니다. '*'는 끝에있는 문자의 임의의 양을 의미하고 [x, y, z]는 문자가 x 또는 y 또는 z가 될 수 있음을 의미합니다.배열 대신 목록 요소 C
int MatchWord(char *Word, char *Sequence)
{
int i = 0;
int j = 0;
int k = 0;
int LastChar = 0;
int CharMatch = 0;
char SpecifiedChars[20];
while(Word[i]!='\0' && Sequence[j]!='\0')
{if(isalpha(Sequence[j]))
{
if(Word[i]!=Sequence[j])
{return 0;}
i++;
j++;
}
if(Sequence[j] == '?')
{
i++;
j++;
}
if(Sequence[j] == '[')
{
j++;
while(Sequence[j]!= ']')
{
if(isalpha(Sequence[j]))
{
SpecifiedChars[LastChar] = Sequence[j];
LastChar++;
j++;
}
else
{j++;}
}
j++;
for(k = 0 ; k <= LastChar ;k++)
{
if(SpecifiedChars[k]==Word[i])
{CharMatch = 1;}
SpecifiedChars[k] = ' ';
}
SpecifiedChars[0] = '\0';
LastChar = 0;
if(!CharMatch)
{return 0;}
i++;
}
if(Sequence[j] == '*')
{
j++;
while(Word[i]!='\0')
{i++;}
}
}
return 1;
}
int main()
{
char word[30], keyword[30];
printf("Type the word: \n");
scanf("%s",word);
printf("Type the key: \n");
scanf("%s",keyword);
if(MatchWord(word,keyword))
{
printf("\nWords match");
}
else
{
printf("\nWords don't match");
}
return 0;
}
하지만 대신 사용자가 첫 번째 단어를 입력시키는의,이 파일 TXT에서 내가 가진 자료의 단어를 확인하는 변경해야 : 그것은처럼 보이는 방법은 다음과. 그들은 구조에있어 :
typedef struct bazaslowek
{
char *word1;
char *category;
struct bazaslowek* next;
} baza;
을 그리고 나는 또한 완벽하게 작동 목록에 넣어 어떻게는 다음과 같습니다
char word1[30];
char category[20];
FILE *fp;
if ((fp = fopen("bazaslow.txt", "r"))==NULL)
{printf("Error!");
exit(EXIT_FAILURE);}
else
{
while(!feof(fp))
{
fscanf(fp,"%s %s \n", word1, category);
baza *wsk = *head;
baza *new = malloc (sizeof(baza));
new -> next = NULL;
new -> word1 = strdup(word1);
new -> category = strdup(category);
if(wsk == NULL)
{
new -> next = *head;
*head = new;
}
else
{
while(wsk -> next != NULL)
wsk = wsk -> next;
wsk -> next = new;
}
}
}
fclose(fp);
wsk->next!=NULL
동안은 keyword
경우 확인 그래서 내가 루프에서 최선을 다하는 시도 word1
과 일치합니다. 그렇다면 printf를 사용하고 다른 단어를 검사합니다. 그렇지 않으면 printf없이 목록의 다른 단어로 이동합니다. 슬프게도 나는 여기에 비참하게 실패한다. 보통 printf를 전혀하지 않거나 모든 단어를 printfs하지 않기 때문에 일치하는지 여부는 중요하지 않다. 아무도 제발 어떻게 말해줘야 해?