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;
            }
        }
    }

}

Here is my new code. It still prints a bunch of numbers after the array that aren't in the file. Am I close here? what is still wrong.

Output:

-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

Why is it still printing the last number twice? Thanks for your help

iamthewalrus
  • 47
  • 2
  • 7
  • 1606415136 these numbers are a sign of array out of bounds, why your arrays still have size 0 ? – taocp Apr 10 '13 at 17:43
  • Andy, while this won't help with the problem it will help you in the future. Please make sure that you have opened a file: http://www.cplusplus.com/reference/fstream/ifstream/is_open/ It will save you a lot of time and debugging. – Melon Apr 10 '13 at 17:44

1 Answers1

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

Your arrays have 0 in length. You probably mean:

int array1[MAX], array2[MAX];

You have to allocate memory for your arrays in order to load stuff into it.

You can instead pass vectors into the function and use push_back to put what you read from file into the vectors.

Meanwhile,

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

prints array address. so it is expected. You need to loop through the array to print out stuff.

taocp
  • 23,276
  • 10
  • 49
  • 62