C言語の関数の定義について質問します
struct monster{
int type; /* タイプ */
char trick[25]; /* 技 */
char trick2[25]; /* 技2 */
int tricktype; /* 技1のタイプ */
int tricktype2; /* 技2のタイプ */
int trickeffect; /* 技1の威力 */
int trickeffect2; /* 技2の威力 */
char name[10]; /* 名前 */
int power; /* 攻撃力 */
int diffence; /* 防御力 */
int speed; /* 素早さ */
int HP; /* 体力 */
/* 1,fire 2,water 3,nature 4,thunder 5,wind */
};
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);
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: 関数 ‘inputmonster’ 内:
monsterbattle.c:497:63: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません
for(m = 0; m < 5; m++) printf("%d, %s\n", m+1, monster[m].name);
^
monsterbattle.c:499:45: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません
printf("%d体目 : %s\n\n", i+1, monster[x[t][i]-1].name);
^
monsterbattle.c:503:68: エラー: 添字が付けられた値が、配列、ポインタまたはベクト ルではありません
for(i = 0; i<3; i++) printf("%d体目 : %s ", i+1, monster[x[t][i]-1].na me);
というような結果が返ってきました。
どうやら定義がうまくなっていないようなのですが、どこを改善すればうまく動くようになるのでしょうか?
お手数ですが、よろしくお願いいたします。
お礼
ご回答誠にありがとうございます。 シフトJISでこれまでうまくいってました。 そこでアドバイスはできないでしょうか? 度々すいません。 ご回答のほど宜しくお願い申し上げます。
補足
文字コードがUNICODEになっていました。 シフトJISに変えたらOKでした。 ヒントをくださりありがとうございます