0
all。我已经尝试过,并试图让我的头脑在这附近,并感觉我几乎在那里,但我很困惑有多少'*'我需要!我有一个函数,它将包含数据文件,int和指向两个未初始化的二维数组的指针的字符串作为输入。该函数读取数据文件,然后分配内存并相应地填充数组。将未初始化的二维数组作为参数传递给C
此代码是完全错误的,我知道,但这个想法是:
void main()
{
double **Array1;
int **Array2;
int dimension1;
char DirWork[100], buff[100];
f_ReadData(DirWork, dimension1, &Array1, &Array2);
sprintf(buff,"%lf",Array1[0][0]); // Causes segmentation fault
printf(buff);
}
和
void f_ReadData(char *DirWork, int dimension1, double ***Array1ptr, int ***Array2ptr)
{
int ct, ct2;
double **Array1 = *Array1ptr;
int **Array2 = *Array2ptr;
char FullDirArray1[100], FullDirArray2[100];
FILE *d_Array1, *d_Array2;
sprintf(FullDirArray1,"%s%s,DirWork,"Array1.dat");
sprintf(FullDirArray2,"%s%s,DirWork,"Array2.dat");
d_Array1=fopen(FullDirArray1,"r");
d_Array2=fopen(FullDirArray2,"r");
fscanf(d_Array1,"%d", &dimension1);
Array1 = dmatrix(0,dimension1-1,0,3); // allocates memory to Array1 (dimension1 x 3) elements, using nrutil
Array2 = imatrix(0,dimension1-1,0,3); // allocates memory to Array2 (dimension1 x 3) elements, using nrutil
for(ct=0; ct<dimension1; ct++)
{
for(ct2=0; ct2<3; ct2++)
{
fscanf(d_Array1, "%lf", &Array1[ct][ct2];
fscanf(d_Array2, "%d", &Array2[ct][ct2];
}
}
fclose(d_Array1);
fclose(d_Array2);
}
我已经错过了的错误处理,但我确实有一些的,在地方...不是它帮助。当我尝试从主函数访问数组时,我遇到了分段错误。
如果有人可以帮忙,我会很感激......我看到*星星!谢谢!
对不起 - 我忘了复制行“Array1ptr =&Array1;”和“Array2ptr =&Array2;”到f_ReadData(他们在我的真实,更长的代码),但我仍然有一个分段错误 - 也许这些行包含错误? – JennieEnglish 2012-03-11 23:20:14
是的,正是这些行包含错误。另一个董事会的人善意地指出我的愚蠢。 :-)当然,它应该是'* Array1ptr = Array1;'等。谢谢你的帮助! – JennieEnglish 2012-03-12 03:46:00