There is a problem with my load function which i cannot wrap my head around. I can run speller however because of this one problem, my misspelled words is always more than the actual value. What is wrong with my load? I am sure the problem is in load.
bool load(const char *dictionary)
{
root = calloc(1, sizeof(node));
total_words = 0;FILE *fp = fopen(dictionary, "r");
if (fp == NULL)
{
printf("Could not open %s\n", dictionary); return false; }
node *trav = root;
for (int c = fgetc(fp); c != EOF; c = fgetc(fp))
{
if (c == '\n')
{
trav->is_word = true;
total_words++;
trav = root;
}
else
{
int index = getIndex(c);
if (trav->children[index] == NULL )
{
trav->children[index] = calloc(1, sizeof(node));
}
else
{
trav = trav->children[index];
}
}
}
fclose(fp);
return true;
}
UPDATE*** After removing else function from if (trav->children[index]==NULL) i can run the program. Meaning i just type trav=trav->children[index] without putting it in else. But i dont understand how that makes the program work. It seems to me that its the same