テキスト ファイルを読み取り、ファイル内の整数値から配列を作成し、その配列の参照を main 関数に返す関数を作成しました。私が書いたコード(VS2010で):
//main.cpp
void main(){
int T_FileX1[1000];
int *ptr=readFile("x1.txt");
for(int counter=0; counter<1000; counter++)
cout<<*(ptr+counter)<<endl;
}
関数は次のとおりです。
//mylib.h
int* readFile(string fileName){
int index=0;
ifstream indata;
int num;
int T[1000];
indata.open("fileName");
if(!indata){
cerr<<"Error: file could not be opened"<<endl;
exit(1);
}
indata>>num;
while ( !indata.eof() ) { // keep reading until end-of-file
T[index]=num;
indata >> num; // sets EOF flag if no value found
index++;
}
indata.close();
int *pointer;
pointer=&T[0];
return pointer;
}
ファイル内のデータには、次のような正の数値が含まれています
5160
11295
472
5385
7140
「readFile(string)」関数に各値を書き込むと、true が書き込まれます。しかし、Uが「メイン」関数で書いたように画面に書いたとき、それは奇妙な値を与えます:
0
2180860
1417566215
2180868
-125634075
2180952
1417567254
1418194248
32
2180736
私のデータとは無関係です。私のファイルには 1000 個の数字があり、実際に書いた後にこれらの無関係な値を絶賛していると思います。たとえば、最初の 500 個の値を true に書き込み、次に無関係な値をデータに書き込みます。私のせいはどこですか?