我编写了一个函数来读取文本文件,从文件中的整数值创建一个数组,并将该数组的引用返回给主函数。我写的代码(在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 在“main”函数中写的那样把它写到屏幕上时,它给出了奇怪的值:
0
2180860
1417566215
2180868
-125634075
2180952
1417567254
1418194248
32
2180736
与我的数据无关。我的文件中有 1000 个数字,我想它会在部分真实写作之后对这些不相关的值赞不绝口。例如,它首先将 500 个值写入 true,然后将不相关的值写入我的数据。我的错在哪里?