演習課題「間違い探し」
右のコードエリアには、構造体から変数を宣言して、メンバ変数の値をもとにメッセージを出力するコードがあります。
このコードは、実行するとエラーになってしまいます。
正しい出力が得られるようにプログラムを修正してください。
期待する出力値
みなさんこんにちは、霧島京子です!
演習課題「データ型に名前をつけよう」
右のコードエリアでは、Person という名前のデータ型を使ってコードを記述していますが、この Person は定義されていません。
typedef をつかって、構造体に Person という名前をつけてください。
コードを実行して正しく表示されれば、演習課題クリアです!
期待する出力値
みなさんこんにちは、霧島京子です!
#03:構造体を扱うときに便利な機能を使ってみよう
構造体を扱うときに知っておくと便利な機能を紹介します。
strcpy は文字列をコピーする関数です。
使用するには、string.h をインクルードする必要があります。#include <string.h>
strcpy は以下のようにして利用します。strcpy(s1, s2);
  s1 : コピー先の変数 (charの配列)
  s2 : コピーする文字列
たとえば、以下のように使うことができます。#include <stdio.h>
#include <string.h>
int main(void)
{
    char s1[20];
    char s2[] = "paiza";
    // s2 の文字列を s1 にコピーする
    strcpy(s1, s2);
    printf("%s\n", s1); //=> paiza
}
構造体のメンバが文字列のときは、 strcpy を使ってコピーできます。#include <stdio.h>
#include <string.h>
struct player {
    char name[20];
    int hp;
};
int main(void)
{
    struct player hero;
    // "勇者" を hero.name にコピーする
    strcpy(hero.name, "勇者");
    hero.hp = 100;
    printf("%s\n", hero.name); //=> 勇者
}
typedef を使うとデータ型に名前をつけることができます。
typedef は以下のようにして利用します。typedef データ型 新しい名前;
たとえば、int 型に Weight という名前をつける場合は以下のように記述します。#include <stdio.h>
typedef int Weight;
int main(void)
{
    Weight w = 100;
    printf("%d kg\n", w); //=> 100 kg
}
構造体の宣言と一緒に typedef を使うことができます。typedef struct player {
    char name[20];
    int hp;
    int power;
} Player;
構造体タグ (player) は省略できるので、以下のように書くこともできます。typedef struct {
    char name[20];
    int hp;
    int power;
} Player;
このチャプターで作成したコードです。// 構造体を扱うときに便利な機能を使ってみよう
#include <stdio.h>
#include <string.h>
typedef struct {
    char name[20];
    int hp;
    int power;
} Player;
int main(void)
{
    Player hero;
    strcpy(hero.name, "勇者");
    hero.hp = 100;
    hero.power = 100;
    printf("%s:HP %d, 攻撃力 %d\n", hero.name, hero.hp, hero.power);
}
strcpy - 初心者のためのポイント学習 C 言語
http://www9.plala.or.jp/sgwr-t/lib/strcpy.html
typedef - 超初心者向けプログラミング入門
https://programming.pc-note.net/c/typedef.html