次のコードが正しく出力されない理由がわかりません。名前と成績を学生の配列のエントリに読み込むことになっています。何らかの理由で、数字の前に名前がない出力の行で示されるように、実際のエントリの間にファントム エントリがあります。
fin.open("data.txt");
for ( int i=0 ; getline(fin, info[i].name) && (i<SIZE) ; i++){
fin.clear();
fin >> info[i].quiz.gradeone;
fin >> info[i].quiz.gradetwo;
fin >> info[i].quiz.gradethree;
fin.clear();
numb++;
cout << info[i].name << info[i].quiz.gradeone << info[i].quiz.gradetwo
<< info[i].quiz.gradethree << endl;
}
fin.close();
データは次のとおりです。
Jeramy Puleo
45 99 101
Liz Kershaw
55 70 35
Sherrill Dykes
88 94 100
Emmitt Auclair
89 94 88
Nana Bassler
22 55 88
そして(間違った)出力:
Jeramy Puleo 45 99 101
0 32767 0
Liz Kershaw 55 70 35
0 0 0
Sherrill Dykes 88 94 100
0 0 0
Emmitt Auclair 89 94 88
0 0 0
Nana Bassler 22 55 88