我正在尝试执行以下操作:使用函数读取包含整数数据的文本文件,这样代码不会弄乱我的主函数,然后将数据解析到主函数。
我的代码看起来像这样
void Readata(char* fname, int* n, int* TheArray){
int nn=0;
int anyInt=0;
ifstream InFile( fname );
if ( ! InFile.is_open() ) throw myErrHandler("Could not open input file");
InFile >> anyInt;
if ( ! InFile ) throw myErrHandler( "Could not read size of array" );
nn=anyInt;
(*n)=nn;
int* AnArray = (int*) calloc(nn,sizeof(int));
for(int i=0; i<nn; i++){
InFile >> anyInt;
if ( !InFile ) throw myErrHandler( "Could not read data" );
AnArray[i]=anyInt;
}
TheArray = AnArray;
}
主要功能看起来像
int main(int argc, char **argv){
if ( argc < 2 ){
cerr << "Usage: " << argv[0] << " input file" << endl;
return 777;
}
int n;
int* TheArray;
ReadData(arg[1], &n, TheArray);
return 1;
}
我的问题是,当我尝试从主函数访问 TheArray 时,我收到“分段错误(核心转储)”消息。显然,在调用 ReadData 函数后,我没有用“TheArray”指针指向正确的位置。如果我在 ReadData 函数中将数据打印到屏幕上,AnArray 和 TheArray 都指向相同的(并且是正确的)。这样做的正确方法是什么?