ここに私の批評があります
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;
}