配列で習ったように、配列の宣言は次のように出来る。
型 配列名[大きさ];
従って、この配列の型指定に、構造体型を指定することも出来る。この場合、指定 した構造体型の配列が確保できることになる。
例 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人分のデータを一度に読み込むことが出来る。