Previous: 構造体の中の構造体
Up: 構造体 II
Next: 標準関数 strcpy(), sscanf()
Previous Page: 構造体の隠蔽
Next Page: 標準関数 strcpy(), sscanf()
前の章では、構造体の中に配列がある場合を学習したが、配列で習ったように、 配列の宣言は次のように出来る。
型 配列名[個数1]...[個数n];
従って、この配列の型指定に、構造体型を指定することも出来る。この場合、指定 した構造体型の配列が確保できることになる。
例5 struct Test { char name[] int zenki; int kouki; };struct Test gakusei[100];
この例では、100個の gakusei という配列を確保しているが、一つ一つの 配列要素は、 struct Test 型である。従って、例えば、 gakuse[0] は、 name[], zenki, kouki という3つのメンバーを持つ事になる。 個々のメンバーへのアクセス方法は、次のようになる。
例6 gets( gakusei[0].name ); gakusei[0].zenki = 80; gakusei[0].kouki = 60;
この例では、最初の行で、 gakusei[0] のメンバー name[] に標準 入力から読み込んだ文字列を代入し、次の2行では、前期、後期のテストの点を 代入している。
この例から、構造体型の配列を用いる事で、複数の異なる性質のデータの集合を 扱う時に繰り返しを用いる事が出来るようになる点で、便利であることが分かる。 例えば、複数の学生の名前や、成績を読み込むには次のようにすればよい。
例7 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 ...
リダイレクトで100人分のデータを一度に読み込むことが出来る。