質問編集履歴

2

説明分の細かな訂正

2018/07/30 02:07

投稿

KIYZ
KIYZ

スコア17

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

文章の細かな修正

2018/07/30 02:07

投稿

KIYZ
KIYZ

スコア17

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