配列で習ったように、配列の宣言は次のように出来る。
型 配列名[大きさ];
従って、この配列の型指定に、構造体型を指定することも出来る。この場合、指定 した構造体型の配列が確保できることになる。
例 6
struct Test {
char name[30];
int zenki;
int kouki;
};
struct Test gakusei[100];
|
この例では、100 個の gakusei という配列を確保しているが、一つ一つの 配列要素は、struct Test 型である。従って、例えば、gakuse[0] は、name[], zenki, kouki という 3 つのメンバーを持つ事になる。 個々のメンバーへのアクセス方法は、次のようになる。
例 7
gets( gakusei[0].name );
gakusei[0].zenki = 80;
gakusei[0].kouki = 60;
|
この例では、最初の行で、gakusei[0] のメンバー name[] に標準 入力から読み込んだ文字列を代入し、次の 2 行では、前期、後期のテストの点を 代入している。
この例から、構造体型の配列を用いる事で、複数の異なる性質のデータの集合を 扱う時に繰り返しを用いる事が出来るようになる点で、便利であることが分かる。 例えば、複数の学生の名前や、成績を読み込むには次のようにすればよい。
例 8
for ( i=0; i<100; i++ ){
gets( gakusei[i].name );
fflush(stdin);
scanf("%d",&gakusei[i].zenki);
fflush(stdin);
scanf("%d",&gakusei[i].kouki);
}
|
成績のデータは、次のような形式でファイルにあるとすると、
kanayama
80
70
yamada
60
75
hokusei
50
70
...
|
これらのファイルを、 a.out < data などのようにして
リダイレクトを使う事で 100人分のデータを一度に読み込むことが出来る。