将文件读入结构 c 的数组

新手上路,请多包涵

我正在尝试将 .txt 文件读入该程序中的结构数组并显示内容。

该文件如下所示:

 Smith   Jack    60    45    98
Harry   Hisk    45    40    78
Kay     Jacob   35.5  23    45
Dos      hed    23    20    35
Noa      Tom    55    12    32
Joe      Peni   57    49    78
Vin      San    25.6  23    65.5
Jes      Dan    24.3  12    78
Zi       Lee    56    49    99
Angi     Dev    57    48    97
Donald   David  60    50    96
Davis    Lal    47    47    80
Alvis   Sen     56    46    85
Jack    Jill    45    45    75
Messy   Lionel  60    49    100

我正在运行的代码:

 #include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main(){
    const int SIZE=50;
    int i;
    struct Records {
        string firstname;
        string secondname;
        float test1mark;
        float midtestmark;
        float annualmark;
    }record[SIZE];

    ifstream in("Data.txt");

    if (!in){
    cerr << "File can't be opened! " << endl;
    system("PAUSE");
    exit(1);
    }
    for (int i=0; i < SIZE; i++){
    in >> record[i].firstname >> record[i].secondname
    >>record[i].test1mark >> record[i].midtestmark >> record[i].annualmark ;
    }
    for (int i=0;i< SIZE;i++) {
        cout << record[i].firstname<<"  ";
        cout << record[i].secondname<<" ";
        cout << record[i].test1mark<<"  ";
        cout << record[i].midtestmark << "  ";
        cout << record[i].annualmark << "   ";
    }
return 0;
}

我得到的输出:

 Smith   Jack    60      45      98
Harry   Hisk    45      40      78
Kay     Jacob   35.5    23      45
Dos     hed     23      20      35
Noa     Tom     55      12      32
Joe     Peni    57      49      78
Vin     San     25.6    23      65.5
Jes     Dan     24.3    12      78
Zi      Lee     56      49      99
Angi    Dev     57      48      97
Donald  David   60      50      96
Davis   Lal     47      47      80
Alvis   Sen     56      46      85
Jack    Jill    45      45      75
Messy   Lionel  60      49      100
                nan     0       8.94237e-039
                4.36192e-039    0       -2.3511e-038
                0       0       -2.3511e-038
                0       0       0
                1.32253e-038    0       1.32251e-038
                4.2039e-045     0       -2.11122e+037
                1.32251e-038    0       3.21276e-039
                1.4013e-045     0       -2.3511e-038
                1.4013e-045     0       3.76158e-037
                0       0       3.76158e-037
                0       0       1.12104e-044
                4.36195e-039    0       4.36194e-039
                3.57331e-043    0       6.0615e-039
                0       0       3.21276e-039
                4.2039e-045     0       6.41272e-039
                1.12104e-044    0       6.63812e-039
                4.36205e-039    0       -2.75237e+038
                0       0       6.59812e-039
                6.63426e-039    0       1.4013e-045
                0       0       6.47961e-039
                3.21319e-039    0       3.21319e-039
                6.59812e-039    0       3.21299e-039
                8.40779e-045    2.24208e-044    6.01433e-039
                6.6045e-039     0       2.54408e-029
                0       0       6.6045e-039
                0       0       6.43946e-039
                5.88656e-039    0       -4.12495e+011
                0       0       0
                5.88656e-039    0       2.54408e-029
                nan     nan     6.43029e-039
                0       0       0
                5.93823e-039    0       -4.12495e+011
                0       0       0
                5.93823e-039    0       5.74532e-044
                nan     nan     5.93837e-039


进程在 0.05447 秒后退出,返回值为 0

按任意键继续 。 . .

有人可以告诉我它有什么问题吗?我试过使用指针,但它变得更糟了。 -初学者

原文由 Avisaki Usamate 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 302
1 个回答

您的文件有 15 行,因此您只能读取 15 行数据。您正在使用变量 SIZE 来控制应该读取多少行。

问题是 SIZE50 !它 不是 15 。当您尝试读取文件末尾时,输入将 不会 被读取超过第 16行。因此,索引 15 之后的变量将未初始化,即 undefined

将文件中的行数增加到 50 ,或将 SIZE 更改为 15

原文由 Rakete1111 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏