演習課題「間違い探し」
右のコードエリアには、構造体から変数を宣言して、メンバ変数の値をもとにメッセージを出力するコードがあります。
このコードは、実行するとエラーになってしまいます。
正しい出力が得られるようにプログラムを修正してください。
期待する出力値
みなさんこんにちは、霧島京子です!
演習課題「データ型に名前をつけよう」
右のコードエリアでは、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