質問編集履歴
2
説明分の細かな訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
`strncpy()`関数呼び出し時にコピー先として指定する配列として、コピーする文字数が収まらない要素数を持つ配列を指定した時、
|
7
|
+
`strncpy()`関数呼び出し時にコピー先として指定する配列として、コピーする文字数が収まらない要素数を持つ配列を指定した時、コピーが成功するという現象が起こりました。
|
8
8
|
|
9
9
|
|
10
10
|
|
1
文章の細かな修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
-
プログラム1のコンパイル結果:
|
49
|
+
プログラム1のコンパイル結果 (警告内容は理解しています。) :
|
50
50
|
|
51
51
|
```
|
52
52
|
|
@@ -132,7 +132,7 @@
|
|
132
132
|
|
133
133
|
###疑問
|
134
134
|
|
135
|
-
1. プログラム2の`strncpy()`関数でコピー先として指定している配列の要素数は 1 であるため、 "foobar" が収まらないはずですが、実行時にプログラム1のような
|
135
|
+
1. プログラム2の`strncpy()`関数でコピー先として指定している配列の要素数は 1 であるため、 "foobar" が収まらないはずですが、実行時にプログラム1のような警告が出ず、正常にコピーが実行されるのはなぜなのでしょうか。
|
136
136
|
|
137
137
|
2. プログラム2の`str2[]`宣言時に指定する要素数として、`コピーする文字数 + 終端文字` (今回の場合は 7 )未満の数を指定すると、 `printf("str1 => %s\n", str1);` の結果が "foobar" の一部しか表示されなかったり、何も表示されないという現象が起こりますが、これはなぜなのでしょうか。
|
138
138
|
|