0
Мой код будет считывать данные из файла .txt
в двунаправленный список. Вы, ребята, пожалуйста, взгляните и скажите мне, что здесь не так.Невозможно вернуть двойной связанный список
TelephoneBookList * commandLoad(char* fileName) {
TelephoneBookList *(*createList)(TelephoneBookNode*, char[]) = createTelephoneBookList;
char entry[100];
TelephoneBookList* aList = NULL;
TelephoneBookNode* aNode = NULL;
FILE* telephoneListFile = NULL;
telephoneListFile = fopen(fileName, "r");
if (!telephoneListFile)
return NULL;
else {
while (!feof(telephoneListFile)) {
fgets(entry, 100, telephoneListFile);
if (strstr(entry, "#")) //skip the first 2 lines in text file
continue;
aList = (*createList)(aNode, entry); //call the below function
countEntry++;
}
aList->size = countEntry;
fclose(telephoneListFile);
return aList;
}
}
Где-дус это крах? Вы пытались использовать отладчик? –
Вы не читаете файл правильно, используйте 'while (fgets (..)! = NULL) {...}' вместо этого. Поскольку у вас есть это сейчас, если fgets встречает конец файла, вы все равно создаете узел. –
'aList = malloc (sizeof aList);' -> 'aList = malloc (sizeof * aList);' и 'aList = (* createList) (aNode, entry);' -> 'aList = createList()' перейдите к циклу до цикла. и 'addNodeToList (aList, entry);' вместо. – BLUEPIXY