構造体配列
いつもお世話になっています。
今日構造体配列を勉強した際に下の演習をしていたのですが、いまいち基礎的な関数や配列のことやコマンドライン引数のことが理解できていません。一応自分なりにプログラムを書いてみたのですが、エラーがでます。
どなたかアドバイス・ご指摘・解説・例などをおねがいいたします。
問題はコマンドライン引数で人数を指定し,人数分のデータを標準入力(キーボード)から構造体配列に入力し,標準出力(ディスプレイ)に出力するプログラムです。
#include<stdio.h>
typedef struct{
char name[100];
int age;
double height;
double weight;
} PERSONAL_DATA1;
typedef struct{
int person[10];
}PERSONAL_DATA2;
PERSONAL_DATA1 input_personal_data(int num);
void output_personal_data(PERSONAL_DATA2 person[10],int num);
int main(int argc, char *argv[]){
PERSONAL_DATA1 x;
int num,i;
char person[10];
if(argc != 2){
printf("Usage ./test number");
return 0;
}
num=atoi(argv[1]);
for(i=0;i<10&&i<num;i++){
person[i]=input_personal_data();
output_personal_data(person,num);
return 0;
}
}
PERSONAL_DATA input_personal_data(void){
PERSONAL_DATA1 x;
printf("name>");
scanf("%c" ,&x.name);
printf("age>");
scanf("%d" ,&x.age);
printf("height>");
scanf("%lf" ,&x.height);
printf("weight>");
scanf("%lf" ,&x.weight);
return x;
}
void output_personal_data(PERSONAL_DATA2 person[10],int num){
PERSONAL_DATA1 x;
printf("name>>%s\n" ,x.name);
printf("age>>%d\n" ,x.age);
printf("height>>%lf[cm]\n" ,x.height);
printf("weight>>%lf[kg]\n" ,x.weight);
}
またコマンドライン引数で指定したデータファイルAから入力した個人データ集合を構造体配列に取り込み,標準出力(ディスプレイ)と同じくコマンドライン引数で指定したデータファイルBへファイル出力に出力するプログラムというおまけの問題もあります。
こちらの問題のヒントもいただけませんか?