【发布时间】:2012-02-28 00:17:30
【问题描述】:
我正在制作一个 c++ 程序,它应该从标准输入中读取一个整数 N。然后它应该从文件“data.txt”中读取值到一个大小为 N 的数组中。然后它应该将它传递给一个反转的函数数组并返回一个指向新数组的指针。然后它应该打印返回的指针数组的内容。但是每次我运行程序它都会崩溃。有什么想法吗?
#include <iostream>
#include <fstream>
using namespace std;
int * reverseArray(int * arr, const int size)
{
//int arr1[size];
int *arr2 = new int[size];
for(int iii = 0; iii < size; iii++)
{
(*(arr2+iii)) = (*(arr + size - 1 - iii));
}
return arr2;
}
int main()
{
int N;
cin >> N;
if(N >= 0 && N <= 50)
{
ifstream inputFile;
inputFile.open("data.txt");
int *arr = new int[N];
int iii = 0;
while(inputFile >> (*(arr+iii)) && iii < N)
{ iii++;}
arr = reverseArray(arr, N);
for(int jjj = 0; jjj < N; jjj++)
{
cout << (*(arr+jjj)) << endl;
}
delete [] arr;
inputFile.close();
}
return 0;
}
【问题讨论】:
-
你能发布你得到的确切错误吗?
-
那么,它在哪里崩溃了?如果这是 C++,为什么不使用
std::vector和std::reverse?此外,您正在泄漏您最初分配给arr的内存(这也是切换到std::vector的好理由)。 -
在所需位置是否存在
data.txt? -
哪一行崩溃了?
-
快速看了一下,明显漏水但是看不到目前崩溃在哪里