编辑,好吧。所以,我的代码目前大部分都在工作。我知道它缺少一些应该拼写错误的单词。不过不知道为什么。
此链接包含指向我的文件的所有其他链接。因为,我一次只能发布两个链接。
如果您阅读文件。你会看到这一切是如何运作的。我的搜索是超级贫民区,我知道。如果它以不同的字母开头,我想不出一种忽略链表的方法,我所做的一切都会造成无限循环。不过,这可以编译和工作。
它没有收集所有的俚语。
编辑,好吧。所以,我的代码目前大部分都在工作。我知道它缺少一些应该拼写错误的单词。不过不知道为什么。
此链接包含指向我的文件的所有其他链接。因为,我一次只能发布两个链接。
如果您阅读文件。你会看到这一切是如何运作的。我的搜索是超级贫民区,我知道。如果它以不同的字母开头,我想不出一种忽略链表的方法,我所做的一切都会造成无限循环。不过,这可以编译和工作。
它没有收集所有的俚语。
这是我的批评
bool load(const char* dictionary){
// TODO
FILE *dict = fopen(dictionary, "r");
if(opened){
fclose(dict);
return false;
}
不知道opened
从哪里来 - 猜测您事先打开了文件,因此我们不知道文件指针是在开头、结尾还是在中间的某个位置
opened = true;
if(dict == NULL || !dict){
return false;
}
为什么!dict
?
char line[LENGTH];
bool filling;
for(int i = 0; i < LLLength; i++){
struct dict_node *newNode;
newNode = malloc(sizeof(dict_node));
wordArr[i] = newNode;
start[i] = wordArr[i];
}
所以在这里你正在构建 27 个节点。这是一个更简单的版本(并且相同)
for(int i = 0; i < LLLength; i++){
struct dict_node *newNode;
start[i] = malloc(sizeof(dict_node));
}
然后让我们读取文件
while(!feof(dict)){
for(int i = 0; i < LLLength; i++){
filling = true;
while(filling)
fgets(line,LENGTH,dict);
我们到了这一点(27 个中的 1 个,一行最多 45 个字符)
因此,让我们将其弹出到该数组中。start[i]
或wordArrd[i]
任何你喜欢的
由于我们不知道wordArr[i]->word
是字符数组还是指针 - 我无法在这里为您提供帮助
strcpy(wordArr[i]->word,line);
prev = wordArr[i];
现在我们很困惑。您从一个数组开始,但出现了精神分裂症——我们想要一个链表。
wordArr[i]->next = malloc(sizeof(dict_node));
wordArr[i] = wordArr[i]->next;
fgets(line,LENGTH,dict);
strcpy(wordArr[i]->word,line);
}
}
...
fclose(dict);
for(int i = 0; i < LLLength; i++){
wordArr[i] = start[i];
while(wordArr[i]->next != NULL){
wordArr[i] = wordArr[i]->next;
count++;
}
}
int test = 0;
wordArr[test] = start[test];
while(wordArr[test]->next != NULL){
printf("%s",wordArr[test]->word);
wordArr[test] = wordArr[test]->next;
}
return true;
}