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