Я сейчас работаю над функцией CS50 Speller. Мне удалось скомпилировать свой код и закончить прототип полной программы, однако он не работает (не распознает слова с ошибками). Я просматриваю свои функции по одной и распечатываю их вывод, чтобы посмотреть, что происходит внутри.
// Loads dictionary into memory, returning true if successful else false
bool load(const char *dictionary)
{
char word[LENGTH + 1];
int counter = 0;
FILE *dicptr = fopen(dictionary, "r");
if (dicptr == NULL)
{
printf("Could not open file\n");
return 1;
}
while (fscanf(dicptr, "%s", word) != EOF)
{
printf("%s", word);
node *n = malloc(sizeof(node));
if (n == NULL)
{
unload();
printf("Memory Error\n");
return false;
}
strcpy(n->word, word);
int h = hash(n->word);
n->next = table[h];
table[h] = n;
amount++;
}
fclose(dicptr);
return true;
}
Насколько я могу судить, это работает нормально. Это заставляет меня задаться вопросом, связана ли проблема с моей функцией проверки, как показано здесь:
bool check(const char *word)
{
int n = strlen(word);
char copy[n + 1];
copy[n] = '\0';
for(int i = 0; i < n; i++)
{
copy[i] = tolower(word[i]);
printf("%c", copy[i]);
}
printf("\n");
node *cursor = table[hash(copy)];
while(cursor != NULL)
{
if(strcasecmp(cursor->word, word))
{
return true;
}
cursor = cursor->next;
}
return false;
}
Если кто-то с более зорким взглядом может проследить, в чем проблема, я был бы очень благодарен, поскольку я в тупике. Первая функция используется для загрузки слов из словаря в ha sh table \ связанный список. Вторая функция должна проверять слова текстового файла, чтобы увидеть, совпадают ли они с каким-либо термином в связанном списке. В противном случае их следует считать неправильными.