Я пытаюсь создать словарь, в котором хранятся слова и их определения.
До сих пор я делал базовые c вещи, такие как создание структур и пустую структуру словаря:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct{
char wordInDictionary[32];
int numberOfMeanings;
char *wordDefinitions[10];
}Entry; //describes one entry in the dictionary
typedef struct{
int entries;
Entry *arrayOfEntries[100];
}Dictionary; //whole dictionary
Dictionary createDictionary(){
Dictionary emptyDictionary;
emptyDictionary.entries = 0;
int i,j;
for(i=0;i<100;i++){
emptyDictionary.arrayOfEntries[i] = (Entry*)malloc(sizeof(Entry*));
emptyDictionary.arrayOfEntries[i]->numberOfMeanings = 0;
strcpy(emptyDictionary.arrayOfEntries[i]->wordInDictionary, "hello"); //assigning "hello" string because want to test another function in main
for(j=0;j<10;j++){
emptyDictionary.arrayOfEntries[i]->wordDefinitions[j] =
(char*)malloc(500*sizeof(char*));
strcpy(emptyDictionary.arrayOfEntries[i]->wordDefinitions[j], "\0");
}
}
return emptyDictionary;
}
Тогда есть функция типа, которая указывает на Entry, которая ищет некоторое заданное слово , это выглядит следующим образом:
Entry *searchWord(char word[], Dictionary *dict){
Entry *foundWord;
int i;
for(i=0;i<100;i++){
if(dict->arrayOfEntries[i]->wordInDictionary != word){
foundWord = NULL;
}else{
foundWord = dict->arrayOfEntries[i];
}
}
return foundWord;
}
Итак searchWord () должен возвращать указатель на запись, если слово найдено, если нет, то просто возвращает указатель NULL. Затем я протестировал все в main () , но похоже, что searchWord () не работает так, как предполагается:
int main(){
Entry* newEntry;
Dictionary dict = createDictionary();
char word[] = "hello";
newEntry = searchWord(word, &dict);
if (newEntry != NULL) {
printf("\nWord found: '%s'", word);
} else {
printf("\nWord '%s' is not found in the dictionary.", word);
}
return 0;
}
Даже если в моем пустом словарь Я сделал каждое слово «привет», в консоли вывод программы: Слово «привет» не найдено в словаре. Где может быть возможная проблема?