回答編集履歴

1

追記

2021/08/28 09:38

投稿

episteme
episteme

スコア16612

test CHANGED
@@ -8,4 +8,102 @@
8
8
 
9
9
  とするだけでOK.
10
10
 
11
+
12
+
13
+ さもなくば:
14
+
15
+ ```C
16
+
17
+ #include <stdio.h>
18
+
19
+ #include <string.h>
20
+
21
+ #include <stdlib.h>
22
+
23
+
24
+
25
+ // 学生情報を入れる構造体
26
+
27
+ typedef struct {
28
+
29
+ int id; // 学生番号
30
+
31
+ char name[256]; // 氏名
32
+
33
+ int age; // 年齢
34
+
35
+ } student_data;
36
+
37
+
38
+
39
+ // 学生情報を構造体に格納する関数
40
+
41
+ void setData(student_data*, int, char*, int);
42
+
43
+ // 学生情報を表示する関数
44
+
45
+ void showData(student_data*);
46
+
47
+
48
+
49
+ void main() {
50
+
51
+ int i;
52
+
53
+ student_data* data[4];
54
+
55
+ int id[] = { 1, 2, 3, 4 };
56
+
57
+ char name[][256] = { "山田", "佐藤", "太田", "中田" };
58
+
59
+ int age[] = { 18, 19, 21, 18 };
60
+
61
+ // 学生情報をセット
62
+
63
+ for (i = 0; i < 4; i++) {
64
+
65
+ data[i] = (student_data*)malloc(sizeof(student_data)); // ※追加
66
+
67
+ setData(data[i], id[i], name[i], age[i]); // ※ &data[i] → data[i]
68
+
69
+ }
70
+
71
+ // 学生情報を表示
72
+
73
+ for (i = 0; i < 4; i++) {
74
+
75
+ showData(data[i]); // ※ &data[i] → data[i]
76
+
77
+ free(data[i]); // ※追加
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+ void setData(student_data* data, int id, char* name, int age) {
86
+
87
+ data->id = id;
88
+
89
+ strcpy(data->name, name);
90
+
91
+ data->age = age;
92
+
93
+ }
94
+
95
+
96
+
97
+ void showData(student_data*data) {
98
+
99
+ printf("学生番号:%d ", data->id);
100
+
101
+ printf("氏名:%s ", data->name);
102
+
103
+ printf("年齢:%d\n", data->age);
104
+
105
+ }
106
+
107
+ ```
108
+
11
109
  ※ なぜだかわかるかな?