演習課題「間違い探し」
右のコードエリアには、Adventurer構造体の配列が用意されており、
各要素のメンバ job をもとにメッセージを出力しています。
このプログラムを実行すると、エラーになってしまいます。
間違いを正しく修正してください。
期待する出力値
冒険者は魔王を攻撃した
ウィザードは魔王を攻撃した
クルセイダーは魔王を攻撃した
プリーストは魔王を攻撃した
#05:構造体の配列をつくろう
構造体の配列について学習します。具体例として、RPG の敵を表す構造体の配列をつくります。
構造体の配列は、他のデータ型 (int や char など) のときと同じように作成できます。#include <stdio.h>
typedef struct {
char name[20];
int attack;
} Enemy;
int main(void)
{
Enemy enemies[3]; // 構造体の配列
}
○ typedef を使わない場合でも、配列を作成できます。#include <stdio.h>
struct Enemy {
char name[20];
int attack;
};
int main(void)
{
struct Enemy enemies[3]; // 構造体の配列
}
構造体の配列の要素からでも、メンバにアクセスできます。#include <stdio.h>
typedef struct {
char name[20];
int attack;
} Enemy;
int main(void)
{
Enemy slime = {"スライム", 10};
Enemy monster = {"モンスター", 20};
Enemy dragon = {"ドラゴン", 30};
Enemy enemies[3];
enemies[0] = slime;
enemies[1] = monster;
enemies[2] = dragon;
// 配列の要素からメンバにアクセスする
printf("%s\n", enemies[0].name); //=> スライム
}
※ 間違えて以下のように記述してしまうことがあるので、注意してください。enemies.name[0]
このチャプターで作成したコードです。// 構造体の配列をつくろう
#include <stdio.h>
typedef struct {
char name[20];
int attack;
} Enemy;
int main(void)
{
Enemy slime = {"スライム", 10};
Enemy monster = {"モンスター", 20};
Enemy dragon = {"ドラゴン", 30};
Enemy enemies[3];
enemies[0] = slime;
enemies[1] = monster;
enemies[2] = dragon;
for (int i = 0; i < 3; i++) {
printf("%sは勇者を攻撃した!%dのダメージ!\n", enemies[i].name, enemies[i].attack);
}
}
構造体 - 超初心者向けプログラミング入門
https://programming.pc-note.net/c/struct.html
typedef - 超初心者向けプログラミング入門
https://programming.pc-note.net/c/typedef.html