名 年 身長 体重
a 21 184 70
b 22 178 63
c 47 178 50
d 65 180 40
e 33 192 56
f 12 150 51
g 35 185 58
h 25 150 76
i 35 186 56
j 49 185 41
k 36 165 66
#include <stdio.h>
#define NUM 500
typedef struct Body
{
char name[50];
int age;
double height;
double weight;
}Body;
int print_bodydata(const Body* pData);
int input_bodydata(Body* pData);
FILE* check_fopen(char filename[],char mode[]);
int main(void)
{
int i, rc=0, cnt=0, data_ag=0, data_he=0,data_we=0;
Body Data[NUM];
FILE* fp;
int menu;
while(1){
printf("\nメニュー \n");
printf("1:読み込み\n");
printf("2:表示\n");
printf("3:入力\n");
printf("4:書き出し\n");
printf("以外:終了\n\n");
printf("No の入力:");
scanf("%d",&menu); printf("\n");
switch(menu){
//---
printf("\n読み込み\n");
char filename[50];
printf("\nファイル名入力:");
scanf("%s",filename);
fp=check_fopen(filename,"r");
if(fp==NULL)break;
for(i=0;i<NUM;i++){
rc=fscanf(fp,"%s\t%d\t%lf\t%lf\r\n",
Data[i].name, &Data[i].age,
&Data[i].height, &Data[i].weight);
if(rc==EOF) break;
}
cnt=i;
break;
//---
printf("\n表示\n");
printf("\n名\t年\t身長\t 体重\n");
for(i=0;i<cnt;i++) print_bodydata(&Data[i]);
//--------各々の項目の平均値を求めたい--------↓
printf("\n%d件の平均\n",cnt);
for(i=0;i<NUM;i++){
for(rc=0;rc<5;){
data_ag[i]=data_ag[i] + &Data[i]
}
}
//--------各々の項目の平均値を求めたい--------↑
break;
//----
printf("\nデータ入力\n");
if(cnt==NUM){
printf("容量オーバー\n\n");
return -1;
}
input_bodydata(&Data[cnt]);
printf("\n名 \t年 \t身長 \t体重\n");
print_bodydata(&Data[cnt]);
cnt++;
break;
//----
printf("\n書き出し\n");
fp=check_fopen("data.txt","w");
for(i=0;i<cnt;i++){
fprintf(fp,"%s\t%d\t%f\t%f\r\n",
Data[i].name, Data[i].age,
Data[i].height, Data[i].weight);
}
printf("書き込み完了\n");
fclose(fp); printf("close\n");
break;
default:
return 0;
}
}
return 0;
}
FILE* check_fopen(char filename[],char mode[])
{
FILE* fp;
fp=fopen(filename,mode);
if(fp==NULL){
printf("\n再度入力してください\n");
return NULL;
}
printf("\nfile open\n");
return fp;
}
int print_bodydata(const Body* pData)
{
printf("%s\t", pData->name);
printf("%d才\t", pData->age);
printf("%.1fcm", pData->height);
printf("%7.1fkg\n", pData->weight);
return 0;
}
int input_bodydata(Body* pData)
{
printf("名: "); scanf("%s", pData->name);
printf("年: "); scanf("%d", &pData->age);
printf("身長: "); scanf("%lf", &pData->height);
printf("体重: "); scanf("%lf", &pData->weight);
printf("\n");
return 0;
}