Когда я создавал словарь, используя C, он показал мне значение слова, которого нет в самом словаре. Я проверил функцию на проверку равенства двух строк и ее работоспособность, но когда я реализую эту функцию в функции поиска по словарю, где она ищет слово, я вижу значение слова, которое оно не работает, как я и предполагал делать. Я не ищу хорошую производительность, я только пересматривал свои основы в функции и простых булевых функциях. Вот код:
struct Entry
{
char word[50];
char defination[500];
};
bool isEqualString(const char str1[], const char str2[])
{
bool flag = true;
int i;
for(i = 0; str1[i] != '\0'; i++)
if (str1[i] == str2[i])
{
flag = true;
}
if ((str1[i] == str2[i]) && str1[i] == '\0')
flag = true;
else
flag = false;
return flag;
}
int Lookup(const struct Entry dictionary[], const char search[], int entries)
{
int i;
bool isEqualString(const char str1[], const char str2[]);
for (i = 0; i < entries; i++)
{
if (isEqualString(search, dictionary[i].word))
{
printf("%d and its indice = %d\n", isEqualString(search, dictionary[i].word), i);
return i;
}
}
return -1;
}
void main()
{
struct Entry dictionary[2] =
{ {"Hello", "It means hi."},
{"Dead", "It means you are dead"} };
int Lookup(const struct Entry dictionary[], const char search[], int entries);
int entries = 2, searchEntry;
char searchWord[10];
printf("Give us a word to find in the dictionary: \n");
scanf("%s", searchWord);
searchEntry = Lookup(dictionary, searchWord, entries);
if (searchEntry != (-1))
printf("\n%s %s", dictionary[searchEntry].word, dictionary[searchEntry].defination);
}