2013-04-10 68 views
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; 
      } 
     } 
    } 

} 

这是我的新代码。它仍然在数组后面打印一些不在文件中的数字。我在这里吗?什么还是错的。从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 

为什么它仍然打印最后数量的两倍?感谢您的帮助

+0

1606415136这些数字是数组越界的标志,为什么你的数组仍然具有0的大小? – taocp 2013-04-10 17:43:25

+0

Andy,虽然这不会对问题有所帮助,但它将在未来帮助您。请确保您打开了一个文件:http://www.cplusplus.com/reference/fstream/ifstream/is_open/它会为您节省大量时间和调试。 – Melon 2013-04-10 17:44:26

回答

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

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

int array1[MAX], array2[MAX]; 

您必须为您的数组分配内存以便将内容加载到内存中。

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

同时,

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

印刷品阵列地址。所以这是预期的。你需要遍历数组来打印出东西。