2017-04-21 112 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

谢谢,这正是我的问题! –