回答編集履歴

1

ソースの動作に関する記述を追加

2019/01/21 15:09

投稿

pepperleaf
pepperleaf

スコア6383

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  > temp = sorce[ARRAY_SIZE];
10
10
 
11
- str[ARRAY_SIZE] = temp;
11
+ > str[ARRAY_SIZE] = temp;
12
12
 
13
13
 
14
14
 
@@ -17,3 +17,13 @@
17
17
 
18
18
 
19
19
  C言語での文字列の扱いを再確認される事を勧めます。
20
+
21
+
22
+
23
+ [追記]
24
+
25
+ `temp = sorce[ARRAY_SIZE];` sorce配列の ARRAY_SIZE + 1 番目(範囲外)の文字を temp に代入。
26
+
27
+ `str[ARRAY_SIZE] = temp;` str配列の ARRAY_SIZE + 1 番目(範囲外)に tempの文字を代入。
28
+
29
+ `printf("%s\0",str);` コピーは失敗しているが、str, sorce の順にメモリが確保(推測)されているため、"hello!" の文字列が出力されていると思われる。