2012-03-11 11 views
0

all。私は試してみると、これを頭に浮かべて、私はほとんどそこにいると感じていますが、私はどれくらいの '*'が必要かととても混乱しています!私は、データファイル、int、および2つの未初期化2D配列へのポインタを含むディレクトリの文字列を入力として受け取る関数を持っています。この関数は、データファイルを読み込んでメモリを割り当て、それに応じて配列を埋めます。初期化されていない2D配列を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); 
} 

私はここでエラー処理を逃しましたが、私はその中のいくつかを持っていますそれは助けになるわけではない。 main関数から配列にアクセスしようとすると、セグメント化エラーが発生します。

誰かが助けてくれたら、本当に感謝しています。私は星を見ています!ありがとうございました!

答えて

0

次に星の数は正しいです。

割り当てられたバッファにポインタをコピーしないため、segfaultが表示されます。 f_ReadData:Array1のみを初期化しますが、この値を* Array1ptrに割り当てる必要があります。

+0

申し訳ありません - "Array1ptr =&Array1;"という行をコピーするのを忘れていました。と "Array2ptr =&Array2;"私は実際には、より長いコードにありますが、私はまだセグメンテーションフォールトを持っています - おそらくこれらの行にはエラーが含まれていますか? – JennieEnglish

+0

はい、これらの行にはエラーが含まれていました。別のボードの誰かが親切に私の愚かさを指摘しました。 :-)もちろん、 '* Array1ptr = Array1;'などであったはずです。ご協力いただきありがとうございます! – JennieEnglish

関連する問題