回答編集履歴

2

修正

2018/06/17 17:04

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -50,4 +50,4 @@
50
50
 
51
51
  - バッファオーバーランの危険性があります。文字列が12文字以上入力されてもプログラムが落ちないようにしたいのであれば, [標準入力から安全に文字列を受け取る方法いろいろ - Qiita](https://qiita.com/mpyw/items/aff12a6ff2c7726ed1d8) を参考に改良してください。
52
52
 
53
- - 設計上の問題ですが,実際に実用的なプログラムをもし作るのであれば,「`malloc` し構造体を代入したポインタを返す関数」ではなく「引数で受け取ったポインタに構造体を代入する関数」というデザインにすべきです。構造体に含まれる文字列が固定長であれば,そもそもメモリを動的に確保せずとも使えます。
53
+ - 設計上の問題ですが,実際に実用的なプログラムをもし作るのであれば,「`malloc` した領域へのポインタに構造体を書き込んでそのポインタを返す関数」ではなく「引数で受け取ったポインタが指す領域に構造体を書き込む関数」というデザインにすべきです。構造体に含まれる文字列が固定長であれば,そもそもメモリを動的に確保せずとも使えます。

1

蛇足

2018/06/17 17:04

投稿

mpyw
mpyw

スコア5223

test CHANGED
@@ -35,3 +35,19 @@
35
35
  - `&n[0]` は `n` で十分です。
36
36
 
37
37
  - データ格納領域を実際に作らずに `sscanf` で文字列を格納することはできないので,`char *n;` ではなく `char n[12];` として宣言してください。
38
+
39
+
40
+
41
+
42
+
43
+ -----
44
+
45
+
46
+
47
+ 【蛇足】
48
+
49
+
50
+
51
+ - バッファオーバーランの危険性があります。文字列が12文字以上入力されてもプログラムが落ちないようにしたいのであれば, [標準入力から安全に文字列を受け取る方法いろいろ - Qiita](https://qiita.com/mpyw/items/aff12a6ff2c7726ed1d8) を参考に改良してください。
52
+
53
+ - 設計上の問題ですが,実際に実用的なプログラムをもし作るのであれば,「`malloc` して構造体を代入したポインタを返す関数」ではなく「引数で受け取ったポインタに構造体を代入する関数」というデザインにすべきです。構造体に含まれる文字列が固定長であれば,そもそもメモリを動的に確保せずとも使えます。