標準入力から整数Nを読み込むC++プログラムを作成しています。ファイル "data.txt"の値をサイズNの配列に読み込む必要があります。新しい配列へのポインタを返します。次に、返されたポインタの配列の内容を出力する必要があります。しかし、プログラムを実行するたびにクラッシュします。何か案は?プログラムがクラッシュするのはなぜですか?
while(inputFile >> (*(arr+iii)) && iii < N)
iii
を確保するためのチェックが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'に切り替える正当な理由です)。 – Chad
'data.txt'は必要な場所にありますか? – Naveen