1
    #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

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

4

1 回答 1

1
int array1[0], array2[0];

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

int array1[MAX], array2[MAX];

您必须为数组分配内存才能将内容加载到其中。

您可以改为将vectors 传递给函数,并用于push_back将从文件中读取的内容放入向量中。

同时,

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

打印数组地址。所以这是意料之中的。您需要遍历数组以打印出东西。

于 2013-04-10T17:07:26.903 回答