質問するログイン新規登録

回答編集履歴

2

コード追記

2020/06/19 10:40

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,4 +1,64 @@
1
1
  - `Register()`内`Info* info;`
2
2
  - `main()`内`InfoList* list;`
3
3
 
4
- ポインタ変数が宣言されているだけで、入力された値を格納するための領域が確保されていません。
4
+ ポインタ変数が宣言されているだけで、入力された値を格納するための領域が確保されていません。
5
+
6
+ ---
7
+ メモリを動的に確保するなら[malloc](https://ja.cppreference.com/w/c/memory/malloc)と[free](https://ja.cppreference.com/w/c/memory/free)を使用します。
8
+
9
+ ---
10
+ ポインタで渡したいだけなら
11
+ ```diff
12
+ void Register(InfoList* list) {
13
+ printf("登録したい");
14
+ int ID = InputID();
15
+ - Info* info;
16
+ + Info info;
17
+ - InputInfo(info);
18
+ + InputInfo(&info);
19
+ - SetInfo(list, info, ID);
20
+ + SetInfo(list, &info, ID);
21
+ printf("登録に成功しました。\n");
22
+ }
23
+ int main() {
24
+ - InfoList* list;
25
+ + InfoList list;
26
+ int MenuID = 0;
27
+ while (MenuID != 5) {
28
+ printf("---------------住所録プログラム--------------\n");
29
+ printf("1:登録\n");
30
+ printf("2:検索\n");
31
+ printf("3:閲覧\n");
32
+ printf("4:削除\n");
33
+ printf("5:終了\n");
34
+ printf("行う操作の番号を入力して下さい。\n");
35
+ scanf("%d", &MenuID);
36
+ system("cls");
37
+ switch (MenuID) {
38
+ case 1:
39
+ - Register(list);
40
+ + Register(&list);
41
+ break;
42
+ case 2:
43
+ - Search(list);
44
+ + Search(&list);
45
+ break;
46
+ case 3:
47
+ - ListAll(list);
48
+ + ListAll(&list);
49
+ break;
50
+ case 4:
51
+ - Delete(list);
52
+ + Delete(&list);
53
+ break;
54
+ case 5:
55
+ break;
56
+ default:
57
+ printf("不正な番号です。再入力して下さい。\n");
58
+ break;
59
+ }
60
+
61
+ }
62
+ return 0;
63
+ }
64
+ ```

1

文言修正

2020/06/19 10:40

投稿

SHOMI
SHOMI

スコア4079

answer CHANGED
@@ -1,4 +1,4 @@
1
1
  - `Register()`内`Info* info;`
2
2
  - `main()`内`InfoList* list;`
3
3
 
4
- ポインタ変数が宣言されているだけで領域が確保されていません。
4
+ ポインタ変数が宣言されているだけで、入力された値を格納するための領域が確保されていません。