#include <stdio.h>
#include <malloc.h>
#define NAME_MAX 20 /* 文字列の最大数 */
/* 構造体の宣言 */
struct student_data{
/* 各メンバーの宣言 */
int number; /* 学籍番号 */
char name[NAME_MAX+1];/* 氏名 */
double height; /* 身長 */
};
int main (void) /* 引数無しのmain関数 */
{
/*#define student_data_max 5 /* 入力する学生数 */
/* student_data_maxの代わりの変数を用意 */
int student_data_max;
//struct student_data input_data[student_data_max]; /* 構造体による変数宣言 */
struct student_data *data_p; /* 構造体によるポインタ変数宣言 */
struct student_data *data_ini; /* 先頭を格納するポインタ */
int input_count; /* カウンタ変数 */
printf("Student Max Number?");
scanf("%d",&student_data_max);
data_ini=(struct student_data*)malloc(sizeof(struct student_data)*student_data_max);
/* データの入力 */
for (input_count=0, data_p=data_ini; input_count < student_data_max; input_count +=1, data_p +=1)
{
/* 構造体のメンバ指定 (変数の場合) */
printf("Student number->");
scanf("%d",&data_p->number);
printf("Name->");
scanf("%s",&data_p->name);
/*またはscanf("%s",input_data[input_count].name[0]);*/
printf("Height->");
scanf("%lf",&data_p->height);
}
/* データの出力 */
for (input_count=0,data_p = data_ini;
input_count < student_data_max;
input_count +=1 , data_p ++)
{
/*構造体のメンバ指定(ポインタ変数の場合) */
printf("%d ",data_p->number);
printf("%s ",data_p->name);
printf("%lf\n",data_p->height);
}
free(data_ini);
return 0; /* 正常終了 */
}