在c++中从.txt文件加载数组时遇到问题

Trouble loading array from .txt file in C++

本文关键字:数组 遇到 问题 加载 文件 c++ 中从 txt      更新时间:2023-10-16
    #include <cstdlib>
    #include <iostream>
    #include <fstream>
    using namespace std;
    const int MAX=100;


//Declare Functions
    void loadFile(istream &input_file, int arr[], int maxLength, int& length);
    //Main Function
    int main()
    {
        ifstream in_file1;
        ifstream in_file2;
        in_file1.open ("input1.txt");
        in_file2.open ("input2.txt"); 

        int array1[0], array2[0];

        int length;
         loadFile (in_file1, array1, MAX, length);


for (int i = 0; i <= length; i++)
{
    cout << array1[i] << endl;
}
cout<<endl<<endl;
loadFile (in_file2, array2, MAX, length);
for (int i = 0; i <= length; i++)
{
    cout << array2[i] << endl;
}
        return 0;
        }

    //Function Definitions
    void loadFile(istream &input_file, int arr[], int maxLength, int& length)
{
    int i;
    int input;

    {
        for (i=0; i<maxLength; i++)
        {
            if (!input_file.eof())
            {
            input_file>>input;
            arr[i]=input;
            length=i;
            }
        }
    }
}

这是我的新代码。它仍然在数组后面打印一串不在文件中的数字。我离这儿近吗?

输出:

-26
128
184
-4
-51
129
-93
199
115
-92
16
0
-64
56
5
112
-20
160
-56
148
94
18
145
155
178
83
-57
103
-68
69
-53
80
148
131
-82
1
102
-50
192
27
32
-63
34
150
160
160

137
-53
119
-64
-80
186
144
-78
-1
62
-72
86
127
40
53
-93
41
45
194
-19
118
53
31
-52
-27
150
-31
86
-29
34
103
4
-92
90
18
13
49
-57
-51
-7
78
62
97
15
122
154
172
9
-5
108
-33
-33
-60
88
89
190
171
109
39
111
-55
-11
160
16
68
172
168
-64
-14
-15
142
-16
-16

为什么它仍然打印最后一个数字两次?谢谢你的帮助

int array1[0], array2[0];

数组的长度为0。你的意思可能是:

int array1[MAX], array2[MAX];

你必须为你的数组分配内存以便加载内容。

您可以将vector s传递到函数中,并使用push_back将从文件中读取的内容放入向量中。

与此同时,

 cout<<array1<<endl;
 cout<<array2<<endl;

打印数组地址。这是意料之中的。您需要循环遍历数组以打印出内容。