2016-05-10 17 views
0

Mein Code liest Daten aus der Datei .txt in eine doppelt verkettete Liste. Bitte schaut es euch an und sagt mir, was hier falsch gelaufen ist.Doppelt verknüpfte Liste kann nicht zurückgegeben werden

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

Wo dos es zum Absturz? Haben Sie versucht, einen Debugger zu verwenden? –

+3

Sie lesen die Datei nicht richtig, verwenden Sie stattdessen 'while (fgets (..)! = NULL) {...}'. Wie Sie es jetzt haben, wenn fgets das Ende der Datei trifft, erstellen Sie immer noch einen Knoten. –

+2

'aList = malloc (sizeof aList);' -> 'aList = malloc (Größe von * aList);' und 'aList = (* createList) (aNode, Eintrag);' -> 'aList = createList()' gehe zur vorherigen Schleife. und 'addNodeToList (aList, entry);' anstelle von. – BLUEPIXY

Antwort

0

Wechsel:

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

An:

while (fgets(entry, 100, telephoneListFile)) { 
Verwandte Themen