15−2.構造体の使用例

構造体の使用手順については理解できましたか。

ここでは構造体の使用例として、scanf()でのデータ入力、構造体の一括代入、構造体の入れ子について説明します。

(1)scanf()を用いてのデータ入力

構造体に scanf() でデータを入力する場合も通常の変数への入力と変わりありません。

各メンバの型を考えて引数を指定して行ってください。

変数のアドレスをとりだすには、'&' を変数の前に付け、配列のアドレスをとりだすには、'&' は不要です。

#include <stdio.h>

struct seiseki {	/* 構造体の宣言 */
	int no;
	char name[20];
	double average;
};

int main(void)
{
	int i;
	struct seiseki seito1, seito2[20];	/* 構造体変数と構造体配列の宣言 */

	/* 構造体変数に scanf()でデータを入力 */
	scanf("%d", &seito1.no);
	scanf("%s", seito1.name);
	scanf("%lf", &seito1.average);
	
	/* 構造体配列に scanf()でデータを入力 */
	for(i = 0; i < 3; i++) {
		scanf("%d", &seito2[i].no);
		scanf("%s", seito2[i].name);
		scanf("%lf", &seito2[i].average);
	}
	/* 入力データの確認 */
	printf("no:%d name:%s average:%f\n", seito1.no, seito1.name, seito1.average);
	for(i = 0; i < 3; i++) {
		printf("no:%d name:%s average:%f\n", 
			seito2[i].no, seito2[i].name, seito2[i].average);
	}
	
	return 0;
}

(2)構造体の一括代入

同一の型を持った構造体は一括して代入が可能です。

#include <stdio.h>

struct seiseki {
	int no;
	char name[20];
	double average;
};

int main(void)
{
	struct seiseki seito1 = { 5, "KASAHARA", 83.5 };
	struct seiseki seito2, seito3[20];
	
	seito2 = seito1;		/* 構造体変数の一括代入 */
	seito3[1] = seito1;	/* seito2 と seito3[1] の各メンバには、*/
				/* seito1 の内容がそのまま代入された。*/
	return 0;
}

(3)構造体の入れ子

※ 入れ子の構造体は、次のようにまとめて記述することも可能です。
struct	syain_dt {	/* 社員情報 		*/
	long	no;		/* 社員番号 	*/
	char	name[20]; 	/* 氏名    	*/
	char	yaku[20]; 	/* 役職		*/
	int	nensu;		/* 勤続年数	*/
	struct	kyuuyo {   	/* 給与		*/
		long	kihon;		/* 基本給 	*/
		long	jyutaku;   	/* 住宅手当	*/
		long	kazoku;		/* 家族手当	*/
		long	sikaku;		/* 資格手当	*/
	} kyu;
};
 上記の構造体の全体図を図示するとつぎのようになります。
演習
◆◆前ページ  ▲TOP▲  次ページ◆◆

banner
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved