ソースにおいてcase1,2,9はできたのですが、case3~8のソースがわかりません。コメント文に書いてある処理を付け足してほしいです(必要であれば下のソースを変えてもいいですが・・・)。
ただし、
caseごとに関数を作ること(関数名は指定しません)。
case5,8は実行時に名簿番号(名前の入力不要)を入力できるようにして、一致したものがあったら表示や削除(削除した名簿を表示すること)をする。
case6,7の.txtのファイル名は両方 namelist とする。
コメント文に //生徒人数 と表したものがありますが、30人を超えてデータを入力できてもいいです。
ちなみに私は、構造体自体をあまり理解していない状態でそれの関数化をしているため、わかりやすい説明があると助かります。
/* プログラムソース */
#include<stdio.h>
#include<string.h>
struct student{
char number[10]; //名簿番号
char name[50]; //氏名
};
void dataout(struct student *std); //表示
void datain(struct student *std); //入力
int main(void)
{
struct student std[30]; //生徒人数
int n=0,i,menu,end=0;
while(1){
printf("メニュー画面\n");
printf("1:データ入力\n");
printf("2:データ出力\n");
printf("3:小さい順に整列\n");
printf("4:大きい順に整列\n");
printf("5:データ削除\n");
printf("6:ファイルからのデータ読み込み\n");
printf("7:ファイルからのデータ書き込み\n");
printf("8:データ検索\n");
printf("9:終了\n");
printf("項目選択(1~9)-->");
scanf("%d%*c",&menu);
switch(menu){
case 1: //入力
datain(&std[n]);
n++;
break;
case 2: //表示
for(i=0;i<n;i++)
dataout(&std[i]);
if(n==0)
printf("表示するデータがありません\n");
printf("\n");
break;
case 3: //小さい順に表示
case 4: //大きい順に表示
case 5: //データ削除
case 6: //ファイルからデータの読み込み
case 7: //ファイルからデータの書き込み
case 8: //データ検索
case 9: //終了
end=1;
break;
default: //エラー
printf("入力番号がありません\n");
}
if(end==1)
break;
}
return 0;
}
void dataout(struct student *std)
{
printf("%s\t%s\n",std->number,std->name);
}
void datain(struct student *std)
{
printf("名簿番号-->");
gets(std->number);
printf("氏名-->");
gets(std->name);
}
あなたの回答
tips
プレビュー