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

2
  • 1606415136 these numbers are a sign of array out of bounds, why your arrays still have size 0 ? Commented Apr 10, 2013 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: cplusplus.com/reference/fstream/ifstream/is_open It will save you a lot of time and debugging. Commented Apr 10, 2013 at 17:44

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.