• 締切済み

コンパイルエラーについて

次のようなプログラムをうつと以下のようなコンパイルエラーが表示されます。 main(){ int a[2][3]; struct monster monster[5] = { { 1, "a", "b", 1, 2, 120, 80, "v", 60, 60, 60, 100}, { 2, "a", "b", 2, 3, 120, 80, "w", 60, 60, 60, 100}, { 3, "a", "b", 3, 4, 120, 80, "x", 60, 60, 60, 100}, { 4, "a", "b", 4, 5, 120, 80, "y", 60, 60, 60, 100}, { 5, "a", "b", 5, 1, 120, 80, "z", 60, 60, 60, 100}, }; struct monster monster2[5] = { { 1, "a", "b", 1, 2, 120, 80, "v", 60, 60, 60, 100}, { 2, "a", "b", 2, 3, 120, 80, "w", 60, 60, 60, 100}, { 3, "a", "b", 3, 4, 120, 80, "x", 60, 60, 60, 100}, { 4, "a", "b", 4, 5, 120, 80, "y", 60, 60, 60, 100}, { 5, "a", "b", 5, 1, 120, 80, "z", 60, 60, 60, 100}, }; inputmonster(a, monster); printf("これからバトルを開始します\n\n"); printf("player1は%sをくりだした。\n", monster[a[0][0]-1].name); printf("player2は%sをくりだした。\n", monster2[a[1][0]-1].name); battle(a, monster, monster2); return 0; } void inputmonster(int x[][3], struct monster monster[]) { int i, s, t, m, n; for(t = 0; t < 2; t++){ s = 0; while (s < 1){ printf("player%dは好きなモンスターを3つ選んでください\n\n", t+1); for (i = 0; i<3; i++){ printf("%d体目を選んでください。\n\n", i+1); for(m = 0; m < 5; m++) printf("%d, %s\n", m+1, monster[m].name); scanf("%d", &x[t][i]); printf("%d体目 : %s\n\n", i+1, monster[x[t][i] - 1].name); } printf("これでよろしいですか?\n"); for(i = 0; i<3; i++) printf("%d体目 : %s ", i+1, monster[x[t][i] - 1].name); printf("1、はい 2、いいえ\n"); scanf("%d", &n); if(n == 1) s = 1; else s = 0; } } } monsterbattle.c: 関数 ‘main’ 内: monsterbattle.c:499:15: 警告: 互換性のないポインタ型から 1 番目の ‘inputmonster’ の引数に渡しています inputmonster(&a, monster); ^ monsterbattle.c:27:6: 備考: expected ‘int * (*)[3]’ but argument is of type ‘int (*)[2][3]’ void inputmonster(int *x[][3], struct monster monster[]) ^ monsterbattle.c:507:9: 警告: 互換性のないポインタ型から 1 番目の ‘battle’ の引数に渡しています battle(a, monster, monster2); ^ monsterbattle.c:232:6: 備考: expected ‘int *’ but argument is of type ‘int (*)[3]’ void battle(int a[2], struct monster monster[], struct monster monster2[]) ^ すいませんが、あまりエラーの詳細がわからず困っています。 どこをどのように変更すべき表示なのでしょうか? よえろしくお願いします。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

詳細ちゃんと書いてありますけど? >monsterbattle.c:27:6: 備考: expected ‘int * (*)[3]’ but argument is of type ‘int (*)[2][3]’ >void inputmonster(int *x[][3], struct monster monster[]) inputmonsterの第1引数の型は int *(*)[3] なのに呼び出してる側で渡している型は int (*)[2][3] で互換性がないです。 >monsterbattle.c:232:6: 備考: expected ‘int *’ but argument is of type ‘int (*)[3]’ >void battle(int a[2], struct monster monster[], struct monster monster2[]) battleの第1引数の型は int * なのに呼び出している側で渡している型は int (*)[3] で互換性がないです。

appleboshi
質問者

お礼

ありがとうございます。 無事できました^^

関連するQ&A