C++ 读取文件的最后一行并输入到链接列表时出错

C++ 读取文件的最后一行并输入到链接列表时出错,c++,C++,所以我正在为我的班级做一个作业,在作业中我必须从一个文件中读取数据,并用它创建一个双链接列表。我已经完成了所有困难的事情,现在我遇到了一个问题,我的程序抛出了一堆随机字符,并在最后一行自杀 下面是读取数据并将其插入我的链接列表的函数。这是我的教授写的,坦率地说,我不太明白 void PropogateTheList(ifstream & f, LinkList & ML) { static PieCake_struct * record; record= new PieC

所以我正在为我的班级做一个作业,在作业中我必须从一个文件中读取数据,并用它创建一个双链接列表。我已经完成了所有困难的事情,现在我遇到了一个问题,我的程序抛出了一堆随机字符,并在最后一行自杀

下面是读取数据并将其插入我的链接列表的函数。这是我的教授写的,坦率地说,我不太明白

void PropogateTheList(ifstream & f, LinkList & ML)
{
  static PieCake_struct * record;
  record= new PieCake_struct;
  f>>record->id>>record->lname>>record->fname>>record->mi>>record->sex>>record->pORc;

  while(!f.eof())
  {
    ML.Insert(record);
    record = new PieCake_struct;
    f>>record->id>>record->lname>>record->fname>>record->mi>>record->sex>>record->pORc;
  }
}
以下是正在传播的数据:

1   Abay         Harege N O C
2   Adcock       Leand R F P
3   Anderson     Logan B M P
5   Bautista     Gloria A F P
10  Beckett      Dallas B F C
12  Ambrose      Bridget C F C
13  Beekmann     Marvin D M P
14  Bacaner      Tate D M C
16  Bis          Daniel F M P
18  Dale         Kaleisa G F C
19  DaCosta      Ricardo H M P
23  Adeyemo      Oluwanifemi I M C
24  Berger       Chelsea J F C
38  Daniels      Jazmyn K F P
39  Davis        Takaiyh L F C
40  DeJesus      Gabriel M M P
51  Castro       Floriana N F P
52  Chen         Justin O M C
53  Clouden      Ariel P F P
54  Conroy       Cameron Q M C
61  Contreras    Dominic R M P
62  Cooley       Kyle S M C
63  Creighton    Cara T F P
64  Cullen       William U M C
66  Blakey       Casey V M  C
67  Barbosa      Anilda W F P
83  Brecher      Benjamin X M P
84  Boulos       Alexandre Y F C
85  Barrios      Joshua Z M C
85  Bonaventura  Nash A M P
86  Bohnsack     David B M C
87  Blume        Jeffrey C M P
90  Burgman      Megan D F C
91  Bursic       Gregory E M P
92  Calvo        Sajoni F F C
93  Cannan       Austin G M  P
94  Carballo     Nicholas H M C
99  AlbarDiaz    Matias I F P
目前,我根据姓氏按字母顺序对数据进行排序,所以大约在第5行,当它试图打印出99号时,它就死了。如果我以另一种方式对列表排序,程序总是会弄乱最后一行数据。任何帮助都会很好

更新:

所以我试着实现一个if!。在插入之前执行eof,但不幸的是,它什么都不做。我删除了最后一个数据,从而使人感到不安。这是我的函数输出的内容:

****** The CheeseCake Survey ****** 
Id      Last Name       First Name      MI      Sex     Pie/Cake
--      --------        ---------       --      ---     --------
2       Adcock
23      Adeyemo
12      Ambrose
3       Anderson
14      Bacaner
67      Barbosa
85      Barrios
5       Bautista
10      Beckett
13      Beekmann
24      Berger
16      Bis
66      Blakey
87      Blume
86      Bohnsack
85      Bonaventura
84      Boulos
83      Brecher
90      Burgman
91      Bursic
92      Calvo
93      Cannan
0       Carballo????NicholasA8?zL`8?zL`A8?zL`8?zL`??

如果先从流中读取数据,然后检查它是否处于eof状态,并在此基础上插入元素,不是更好吗?在编辑框中,我在没有编译器帮助的情况下编写以下代码,因此,如果我犯了任何错误,我深表歉意。当然,问题出现了,或者我想的是,如果你试图从你的f流中读取eof结果为真的话,会发生什么。要了解更多信息,请查看以下链接:


你会提供你得到的任何错误吗?你的教授需要阅读。故意的内存泄漏不是解决该问题的可接受的解决方法。这个静态变量很奇怪,这能回答你的问题吗?你的教授不应该教C++。像这样的东西真的解释了这里的一些其他问题。我更新了代码并尝试了if检查,我还添加了我得到的特定输出。我尝试了,但不幸的是,没有什么不同。您的输入文件是否有足够的日期安装在PieCake_结构中?是的,所有输入都正确,我可以完美地输出所有内容,唯一的输出错误发生在最后一行的任何数据上。
void PropogateTheList(ifstream & f, LinkList & ML)
{
    while(!f.eof())
    {
        static PieCake_struct * = new PieCake_struct;
        f>>record->id>>record->lname>>record->fname>>record->mi>>record->sex>>record->pORc;
        if(!f.eof())
            ML.Insert(record);
    }
}