2012-04-11 17 views
0

これで構造体の2次元配列に文字列要素を持つ2次元配列の要素を渡そうとしています。私はコードを作ったが、実行時エラーを受け取る。私はboard2 [i] [j]を初期化しようとしているコードに問題があると思います。どんな助けもありがとうございます。Cプログラミング - 構造体2D配列を初期化する

char ***board; 
    int i, j, size; 

    printf("Enter the size of array:"); 
    scanf("%d", &size); 

    if((board = (char***)malloc(sizeof(char**)*size))==NULL) 
    { 
     printf("Memory Allocation failed\n"); 
     return -1; 
    } 

    for(i=0; i<size; i++) 
    { 
     if((board[i] = (char**)malloc(sizeof(char*)*size))==NULL)  
     { 
      printf("Memory Allocation failed\n"); 
      return -1; 
     } 
     for(j=0; j<size; j++) 
     { 
      if((board[i][j] = (char *)malloc(sizeof(char)*4))==NULL) 
      { 
      printf("Memory Allocation failed\n"); 
      return -1; 
      } 
      a = rand() % 2; 
      b = rand() % 2; 
     if(a==0 && b==0) 
      strcpy(board[i][j], "ab"); 
     else if(a && b==0) 
      strcpy(board[i][j], "Ab"); 
     else if(a==0 && b==1) 
      strcpy(board[i][j], "aB"); 
     else 
      strcpy(board[i][j], "AB"); 
     } 

    struct data{ 
    const char *element; 
    int visited; 
    };  
    void board2_initialize(char ***board, int size) 
    { 
    struct data **board2; 


    for(i=0;i<size;i++) 
    { 
    for(j=0;j<size;j++) 
    { 
    board2[i][j].element = board[i][j]; 
    board2[i][j].visited = 0; 
    printf("%s", board2[i][j].element); 
    } 
    } 
    } 

はEDIT:初期化はあなたがboard配列を行う関数内

+0

。確かに、それはクラッシュします。コードの一部を残しましたか? – jv42

+0

board2と同じ方法でboard2を割り当てようとしましたが、エラーが発生しました。 :/ – BluPixel

+0

rand()には種をつけていないことを意味します。これは、毎回同じパターンを生成するという結果をもたらし、ランダムではありません。 – foo

答えて

3

あなたはそれを割り当てるだけで同じように発生することを言及するのを忘れ:あなたはどこにもboard2割り当てていない

struct data **board2 = malloc(sizeof(struct data *) * size); 

for(i = 0; i < size; i++) 
{ 
    board2[i] = malloc(sizeof(struct data) * size); 

    for(j = 0; j < size; j++) 
    { 
     /* ... */ 
    } 
} 
+0

申し訳ありませんが、誤って、元に戻った編集。 – jv42

+0

関数でboard2を初期化しようとするとこれはうまくいきますか?私はそれを試しましたが、エラーを受け取ります。 "void *からデータ**への無効な変換" – BluPixel

+0

待機しているnvmが今すぐに感謝します:) – BluPixel

関連する問題