从C++中的.txt文件加载数组时遇到问题
问题描述:
#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;
}
}
}
}
这是我的新代码。它仍然在数组后面打印一些不在文件中的数字。我在这里吗?什么还是错的。从C++中的.txt文件加载数组时遇到问题
输出:
-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;
印刷品阵列地址。所以这是预期的。你需要遍历数组来打印出东西。
1606415136这些数字是数组越界的标志,为什么你的数组仍然具有0的大小? – taocp 2013-04-10 17:43:25
Andy,虽然这不会对问题有所帮助,但它将在未来帮助您。请确保您打开了一个文件:http://www.cplusplus.com/reference/fstream/ifstream/is_open/它会为您节省大量时间和调试。 – Melon 2013-04-10 17:44:26