構造体データ入力


C言語

 前回、構造体の配列化について解説しました(前回の記事)。今回は構造体のメンバー変数にデータを入力していきます。少し実用的な内容となります。構造体のメンバー変数にデータを一つずつ入力するわけですが、データが沢山ある場合はコードを書くのが大変なので、ループを使います。入力関数scanfはアドレスを指定します。以下がC言語のテストコードです。

#include <stdio.h>
#define ARR_MAX 2

struct cat{
    char name[100];  //名前
    int weight;  //体重
    int age;  //年齢
};
int main()
{
    struct cat cat[ARR_MAX];  //猫の配列

    //メンバー変数に代入
    for(int i=0;i<ARR_MAX;i++)
    {
        printf("cat%d.name?\n",i);
        scanf("%s",cat[i].name);
        printf("cat%d.weight?\n",i);
        scanf("%d",&cat[i].weight);
        printf("cat%d.age?\n",i);
         scanf("%d",&cat[i].age);
    }

    //出力
    for(int i=0;i<ARR_MAX;i++)
    {
        printf("cat%d.name=%s\n",i,cat[i].name);
        printf("cat%d.weight=%d\n",i,cat[i].weight);
        printf("cat%d.age=%d\n",i,cat[i].age);
        printf("--------------------------------------\n");
    }

    return 0;
}

VBA

 以下がVBAのコードです。

Option Explicit

Const ARR_MAX As Integer = 1

'構造体の宣言
Type cat
    name As String
    weight As Integer
    age As Integer
End Type

Sub testStruct()
    Dim cat(1) As cat   '構造体の作成
    Dim i As Integer
    
    'メンバー変数に代入
    For i = 0 To ARR_MAX
        cat(i).name = InputBox("cat" + CStr(i) + ".name?")
        cat(i).weight = InputBox("cat" + CStr(i) + ".weight?")
        cat(i).age = InputBox("cat" + CStr(i) + ".age?")
    Next i
    
    '出力
    For i = 0 To ARR_MAX
        Debug.Print ("cat" + CStr(i) + ".name=" + CStr(cat(i).name))
        Debug.Print ("cat" + CStr(i) + ".weight=" + CStr(cat(i).weight))
        Debug.Print ("cat" + CStr(i) + ".age=" + CStr(cat(i).age))
        Debug.Print ("----------------------------------------------")
    Next i
End Sub

 アドレス指定が隠蔽化されたVBAは C言語よりコードが書きやすいかもしれませんが、やってることは同じです。どちらも実行して適当な名前や数字を入れてみて遊んでください。また定数ARR_MAXの数値を増やしてみるとより多くのデータを入力できます。このデータをファイル保存できれば簡易的なデータベースが完成します。ファイル保存はGUIとVBAのツール制作のページで解説します。次回は今までのテクニックを使ってアルゴリズム作りに慣れていきます。プログラミングにおいてアルゴリズム制作は最も大事だと個人的には思っているのでいつも以上に力を入れてやっていきたいと思います。


コメントを残す