2017-04-21 53 views
0

我試圖創建一個包含8行的.dat文件,第一行是記錄數,其餘7行包含將填充記錄的數據鏈表。C++:從文件中讀入數據以填充鏈接列表

我遇到的問題是我的代碼只填充第一條記錄,但使用cout我知道它正在經歷整個文件。下面是代碼,我的工作片斷:

fstream listBuilder; 
listBuilder.open("HW06.dat"); 

if (listBuilder.is_open()) { 
    TeleType *current; 
    current = listHead; 

    listBuilder >> numberOfRecords; 

    while (listBuilder) { 
     string firstName; 
     string lastName; 
     string phone; 
     string name; 

     listBuilder >> firstName >> lastName >> phone; 

     name = firstName + " " + lastName; 
     current->name = name; 
     current->number = phone; 

     current = current->nextaddr; 
     current = new TeleType; 
    } 

    listBuilder.close(); 
} // end if 
else { 
    cout << "***** Error: File failed to open. *****" << endl; 
} // end else 
+0

要使鏈表工作,您需要鏈接節點。看起來你不是這樣做的。 – user4581301

+0

與僅僅使用'List '並追加?用C++語義做一個C風格的列表構建很奇怪。否則,你沒有給你所有的代碼。 'listHead'? 'TeleType'?另外,如果你確定來自'numberOfRecords'的輸入,你可以循環。 –

+3

在紙上繪製框和箭頭是使用指針調試代碼的最佳方式。 – molbdnilo

回答

1

您應該首先創建的下一個節點,然後指向它,而不是周圍的其他方式!

current->nextaddr = new TeleType; 
current = current->nextaddr; 
+0

謝謝,這正是我的問題! –