2016-05-10 3 views
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; 
    } 
} 
+1

Где-дус это крах? Вы пытались использовать отладчик? –

+3

Вы не читаете файл правильно, используйте 'while (fgets (..)! = NULL) {...}' вместо этого. Поскольку у вас есть это сейчас, если fgets встречает конец файла, вы все равно создаете узел. –

+2

'aList = malloc (sizeof aList);' -> 'aList = malloc (sizeof * aList);' и 'aList = (* createList) (aNode, entry);' -> 'aList = createList()' перейдите к циклу до цикла. и 'addNodeToList (aList, entry);' вместо. – BLUEPIXY

ответ

0

Изменение:

while (!feof(telephoneListFile)) { 
    fgets(entry, 100, telephoneListFile); 

To:

while (fgets(entry, 100, telephoneListFile)) { 
Смежные вопросы