問題
- NINGEN型データ数を指定すると、その要素分だけを格納する配列を作成する。
length of data :3 (← データ数) Please input | name gender age hanyu m 19 takeuichi f 30 kasai m 41 (← ここまで入力) 0 : name = hanyu gender = m age = 19 (格納結果を出力) 1 : name = takeuichi gender = f age = 30 2 : name = kasai gender = m age = 41
- *(x+i).genderを、 (x+i) ->genderと書ける。 ->をアロー演算子という。 (p.91)
#include <stdio.h> #include <stdlib.h> typedef struct ningen { char name[31]; char gender; int age; } NINGEN; int main (void) { NINGEN *x; int i,nx; printf("length of data :"), scanf("%d", &nx); x = (NINGEN *)malloc(sizeof(NINGEN)*nx); /* 一括してメモリ確保 */ printf("Please input | name gender age\n"); i = 0; while (i < nx) { scanf("%s %c %d", x[i].name, &x[i].gender, &x[i].age); i++; } i = 0; while (i < nx) { printf("%d : name = %s gender = %c age = %d \n",i, x[i].name, x[i].gender, x[i].age); i++; } i = 0; while (i < nx) { printf("%d : name = %s gender = %c age = %d \n",i, (x+i)->name, (x+i)->gender, (x+i)->age); i++; } free(x); return (0); }