構造体で名簿作成

最終更新日:2004-06-18.

今回は、構造体を使用して名簿ソフトを作成してみましょう。

とりあえず、構造体のメンバーは番号、名前、年齢、性別の4つとします。
データを保存しておく数は10個として配列を使用します。
データ処理は、入力部分、出力部分とします。
+------------------------------------------------------------+
/* filename=no013-1.c */
/* include */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* struct */
struct group{
int num;
char name[32];
int nenrei;
char seibetsu;
};
/* 関数プロトタイプ宣言 */
int swrite(struct group *x, int i);
int sread(struct group *x);
/* main */
int main( )
{
int i, total;
/* 構造体配列 */
struct group x[10];
total=0;
/* データ入力 */
for( i=0; i<10; i++){
if( swrite(&x[i], i+1)!=0 )
break;
total++;
}
/* 結果表示 */
for( i=0; i<total; i++)
sread(&x[i]);
return 0;/* 終了 */
}
/* データ入力*/
int swrite(struct group *x, int i)
{
int j;
char wk[8];
printf("番号[%d]:", i);
gets(wk);
j=atoi(wk);
x->num=j;
if( j==0 )
return -1;
printf("名前:");
gets(x->name);
printf("年齢:");
gets(wk);
j=atoi(wk);
x->nenrei=j;
printf("性別(J/L):");
while( 1 ){
gets(wk);
if( wk[0]=='J' || wk[0]=='L' )
break;
}
x->seibetsu=wk[0];
return 0;/* 戻る */
}
/* データ出力 */
int sread(struct group *x)
{
if( x->num==0 )
return -1;
printf("番号:%d\n", x->num);
printf("名前:%s\n", x->name);
printf("年齢:%d\n", x->nenrei);
printf("性別:");
if( x->seibetsu=='J' )
printf("男性\n");
else
printf("女性\n");
return 0;/* 戻る */
}
+------------------------------------------------------------+

上記のソースをコンパイルして実行すると以下のようになりました。
なお、番号の項目には[ ]の中の数字を指定します。
なにも指定しないと入力を終了します。
番号[1]:1
名前:tarou
年齢:25
性別(J/L):J
番号[2]:2
名前:hanako
年齢:23
性別(J/L):L
番号[3]:
番号:1
名前:tarou
年齢:25
性別:男性
番号:2
名前:hanako
年齢:23
性別:女性

戻る