C言語でstruct関数③ 配列
auです。
前回はstruct関数に実際にデータをいれてみました。
program-shoshinsya.hatenablog.com
今回は複数のデータを入力できるようにしたいと思います。
構造体の配列
前回は、一人の生徒しかデータを入力しませんでしたが、実際には多くの生徒が在籍しているはずです。
なので今回は、複数のデータ(生徒)を入力したいと思います。
複数の場合は配列を利用して代入し、順番に出力するようにします。
生徒は4人いるものとします。
実際にかいてみます。
#include<stdio.h> struct student { int id; char name[30]; int age; char address[30]; }; typedef struct student student_data; int main(void) { student_data data[] = { {1, "Sato", 20, "Tokyo"}, // 0 {2, "Tanaka", 23, "Kanagawa"}, // 1 {3, "Takahashi", 30, "Tochigi"}, // 2 {4, "Saito", 21, "Gunma"} //3 }; for (int i = 0; i < 4; i++) { printf("id: %d name: %s age: %d address: %s\n", data[i].id, data[i].name, data[i].age, data[i].address); } return 0; } // 実行結果 id: 1 name: Sato age: 20 address: Tokyo id: 2 name: Tanaka age: 23 address: Kanagawa id: 3 name: Takahashi age: 30 address: Tochigi id: 4 name: Saito age: 21 address: Gunma
前回と構造体名の書き方が違うと思います。
前回は"struct student student1"と書いてました。
今回は"typedef struct student student_data;"と書いています。
"typedef"とあるのが違いであり、これは以降struct変数を定義する際にstructと入力しなくて済むようにする。つまり、"student_data data"という文だけで宣言できるので書くのが楽になります。(前回は"struct student student1"という風に書いていた)
"data[]"とすることで、配列を定義しています。配列にそれぞれの生徒のデータが0から順番に設定されていきます(上のプログラムの//0~3の部分)。
それをfor文で4回出力するプログラムになります。