【6日でできるC言語入門】構造体の演習プログラム

 C言語の「構造体」は、複数の関連するデータをひとまとまりで管理するための重要な機能です。構造体を使いこなすことで、現実世界の「ひと・もの・データ」をプログラムで直感的に表現でき、複雑な処理もシンプルに記述できます。
 ここでは「構造体の演習プログラム」として、基礎から実践まで役立つサンプルを3つ紹介し、それぞれのポイントや書き方を詳しく解説します。

1.基本の構造体プログラム

1.1. 個人データの管理

演習内容
1人の個人情報(名前・年齢・身長)を構造体でまとめ、内容を表示するプログラムを作成します。

プロジェクト/ファイル名: Lesson66_1/main.c

#include <stdio.h>
#include <string.h>

struct person {
    char name[100];
    int age;
    double height;
};

int main(void) {
    struct person p1;
    strcpy(p1.name, "鈴木一郎");
    p1.age = 25;
    p1.height = 175.2;

    printf("名前:%s 年齢:%d 身長:%.1fcm\n", p1.name, p1.age, p1.height);
    return 0;
}

実行結果

「SDLチェック」を「いいえ」にして、プログラムを実行します。

名前:鈴木一郎 年齢:25 身長:175.2cm

1.2. ポイント解説

  • 構造体の宣言・変数作成・メンバへのアクセス(.演算子)の基本を学べます。
  • 文字列はstrcpyでコピーする。

2.構造体の配列プログラム

2.1. 複数データの管理

演習内容
複数人(3人分)のテスト点数を構造体配列で管理し、全員分のデータを表示するプログラムを作成します。

サンプルプログラム

プロジェクト/ファイル名: Lesson66_2/main.c

#include <stdio.h>

typedef struct {
    char name[100];
    int score;
} STUDENT;

int main(void) {
    STUDENT students[3] = {
        { "山田太郎", 85 },
        { "田中花子", 92 },
        { "佐藤次郎", 78 }
    };
    for (int i = 0; i < 3; i++) {
        printf("名前:%s 点数:%d\n", students[i].name, students[i].score);
    }
    return 0;
}

実行結果

名前:山田太郎 点数:85
名前:田中花子 点数:92
名前:佐藤次郎 点数:78

2.2. ポイント解説

  • 構造体配列により、同じ種類のデータを複数まとめて管理できる。
  • for文と組み合わせて一括処理が可能。

3.構造体ポインタを使った関数処理

3.1. 関数でデータを書き換える

演習内容
構造体ポインタを使い、関数の中でデータを書き換えるプログラムを作成します。

プロジェクト/ファイル名: Lesson66_3/main.c

#include <stdio.h>
#include <string.h>

typedef struct {
    char name[100];
    int stock;
} ITEM;

void updateStock(ITEM* item, int new_stock) {
    item->stock = new_stock;
}

int main(void) {
    ITEM apple;
    strcpy(apple.name, "リンゴ");
    apple.stock = 50;

    updateStock(&apple, 100);

    printf("商品名:%s 在庫数:%d\n", apple.name, apple.stock);
    return 0;
}

実行結果

「SDLチェック」を「いいえ」にして、プログラムを実行します。

商品名:リンゴ 在庫数:100

3.2. ポイント解説

  • 構造体ポインタ(->演算子)を使えば、関数内で元のデータを直接変更できる。
  • データの柔軟な操作や管理に役立つ。

まとめ

  • 構造体は、複数の関連データをまとめて管理するための基本技術
  • 配列やポインタ・関数との連携により、現実的な課題を柔軟にプログラムできる
  • 練習を通して、より実践的なデータ設計・操作力を身につけよう